我曾经认为它们的工作方式是相同的,都将每个文件添加到索引中。但是我似乎错了。
git add .
和git add -u
有什么区别?
这是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 add <path>
现在与"git add -A <path>
"相同,所以"git add dir/
"将注意到您从目录中删除的路径并记录删除。
在较旧的 Git 版本中,"git add <path>
"会忽略移除操作。如果确实需要,您可以使用"
git add --ignore-removal <path>
"仅添加<path>
中新增或修改的路径。
警告(2013年4月 git1.8.3,为即将推出的 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 2.0 推出之前开始训练他们的手指明确地说"git add -u .
"非常重要。
正如我在 "e"中提到的那样。
就像手册所说的那样:git add .
会添加当前目录下的所有文件,而 git add -u .
只会添加已经被跟踪的文件。
add -u
命令会将删除操作也提交到暂存区。 - CB Bailey
.
(路径规范)。我测试时它能正常工作。 - Sanghyun Leegit add .
将所有更改添加到索引中,因为-A
选项是默认的。请查看此答案https://dev59.com/lHRB5IYBdhLWcg3wn4UL#26343584。 - Sanghyun Lee