【问题标题】:What's the difference between git add * and git add ., if any?git add * 和 git add . 有什么区别,如果有的话?
【发布时间】:2012-06-13 20:00:35
【问题描述】:

git animals 有这一系列命令:

git init
git add *
git commit -a -m ‘initial commit and release!’

git add * 的作用与git add .(我通常这样做)相比,它们是一样的吗?

【问题讨论】:

  • * 通常表示“匹配所有内容”并且 .表示“当前目录”,默认情况下是递归完成的。
  • @TylerH4:但是如果*的扩展包含目录,无论如何它们都会被git递归添加。

标签: git git-add


【解决方案1】:

git add * 将添加 *shell 扩展结果的所有路径,而 git add . 将告诉 git 添加当前目录。

git add * 不会添加以. 开头的路径,因为* 的外壳扩展将这些路径视为“隐藏”路径。

git add * 如果任何扩展路径当前被 git 忽略,也会失败,因为如果您明确指定忽略的路径而不传递 -f(强制)标志以表明您确实想要添加,git 认为这是一个错误被忽略的路径。

如果您让 git 扩展 glob (git add '*'),它将添加“隐藏”文件并跳过被忽略的文件。在这种情况下,它与git add . 的工作方式相同。

【讨论】:

  • 这里的shell是指命令行应用程序还是操作系统?
【解决方案2】:

默认情况下,将目录传递给git add 将递归添加其子目录和文件。

通配符* 将被您的shell 扩展为当前目录下的文件名。

你知道,在 Unix 中. 只指当前目录,所以这两个命令是等价的。虽然* 由shell 处理,. 由git 处理,但它们的作用相同。

【讨论】:

  • 由于*是由shell处理的,所以它不考虑.gitignore,而.会考虑。
猜你喜欢
  • 2011-01-12
  • 2013-02-07
  • 1970-01-01
  • 2020-08-11
  • 2021-08-29
  • 2020-03-29
  • 2022-11-10
  • 2010-10-09
相关资源
最近更新 更多