`git add .`和`git add -u`有什么区别?

时间:2010-02-03 07:50:19

标签: git git-add

我假设两者都以同样的方式工作。两者都将每个文件添加到索引。但我似乎错了。

  • git add .git add -u之间的区别是什么?

3 个答案:

答案 0 :(得分:67)

它是git gotchas之一mentioned here(在Git 2.0之前)。

git add .只会添加内容,而不是已删除的内容(如果已跟踪)。

git add .
git commit
git status
//hey! why didn't it commit my deletes?, Oh yeah, silly me
git add -u .
git commit --amend

git add -A会处理这两个步骤......


Git 2.0, git add -A is default

  

git add <path>现在与“git add -A <path>”相同,所以   “git add dir/”会注意到您从目录中删除的路径   记录删除。
  在旧版本的Git中,“git add <path>”过去常常忽略删除。

     

您可以说“git add --ignore-removal <path>”   如果您真的想要,请在<path>中添加仅添加或修改的路径。


警告(git1.8.3 April 2013, for upcoming git2.0) 我已将我的回答修改为git add -u .,而不是git add -u。:

  

git add -u在Git 2.0中对整个树进行操作,以与“git commit -a”和其他命令保持一致。
  因为没有机制让“git add -u”表现为“git add -u .”,所以它就是   对于那些习惯于“git add -u”(没有pathspec)的人来说,重要的是只为当前子目录中的路径更新索引,以便开始训练他们的手指在Git 2.0之前明确说出“git add -u .”来了。

正如我在“e

中提到的那样

答案 1 :(得分:21)

与说明书一样:git add .会在当前目录中添加所有文件,而git add -u .只会添加已被跟踪的文件。

答案 2 :(得分:12)

git add documentaiton

git add . 

添加当前目录中的所有文件

git add -u 

仅更新当前正在跟踪的文件。