我假设两者都以同样的方式工作。两者都将每个文件添加到索引。但我似乎错了。
git add .
和git add -u
之间的区别是什么?答案 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)