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

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

  • git add .什么区别git add .git add -u

这是在这里提到的git gotcha(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是默认的

git add <path>现在与“ git add -A <path> ”相同,所以“ git add dir/ ”会注意到你从目录中删除的path并logging下去。
在旧版本的Git中,用于忽略删除的“ git add <path> ”。

如果你真的想,你可以说“ git add --ignore-removal <path> ”在git add --ignore-removal <path>中添加只添加或修改的path。


警告( git1.8.3 2013年4月,为即将到来的git2.0 )。
我已经修改我的答案说git add -u . ,而不是git add -u

git add -u将在Git 2.0中的整个树上运行,以便与“ git commit -a ”和其他命令保持一致。
因为没有使“ git add -u ”performance为“ git add -u . ”的机制,所以对于习惯于“ git add -u ”(没有pathspec)的用户来说,当前的子目录开始训练他们的手指明确地说“ git add -u . ”时,他们的意思是在Git 2.0之前。

正如我在“ e ”

像手册说: git add . 将添加当前目录中的所有文件,而git add -u . 只会添加已经被追踪的人。

git添加文档

 git add . 

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

 git add -u 

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