75

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

  • git add .和有什么区别git add -u
4

3 回答 3

78

它是这里提到的 git 陷阱之一(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/”会注意到您从目录中删除的路径并记录删除。
在旧版本的 Git 中,“ git add <path>”用于忽略删除。

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


警告(git1.8.3 April 2013,即将推出的 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”(没有路径规范)只为当前子目录中的路径更新索引的人来说,开始训练他们的手指明确地说“ git add -u .”是很重要的当他们的意思是在 Git 2.0 到来之前。

正如我在“ e ”中提到的

于 2010-02-03T07:56:58.620 回答
25

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

于 2010-02-03T07:55:02.227 回答
14

git 添加文档

git add . 

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

git add -u 

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

于 2010-02-03T07:56:47.357 回答