什么';git add.`和git add-u`之间的区别是什么?

什么';git add.`和git add-u`之间的区别是什么?,git,git-add,Git,Git Add,我假设两者的工作方式相同。两者都将每个文件添加到索引中。但我似乎错了 git-add.和git-add-u之间有什么区别 如手册所述:git add。将添加当前目录中的所有文件,而git add-u。将只添加已被跟踪的文件。 添加当前目录中的所有文件 git add -u 仅更新当前正在跟踪的文件。这是git gotchas(git 2.0之前)之一 git add.只添加存在的内容,而不添加已删除的内容(如果跟踪) git add-A将负责这两个步骤 有 git add现在与“git

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

  • git-add.
    git-add-u
    之间有什么区别

如手册所述:
git add。
将添加当前目录中的所有文件,而
git add-u。
将只添加已被跟踪的文件。

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

git add -u 

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

这是git gotchas(git 2.0之前)之一

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

git add-A
将负责这两个步骤


git add
现在与“
git add-A
”相同,因此 “
git add dir/
”将注意到您从目录中删除的路径,并 记录删除操作。
在旧版本的Git中,“
Git add
”用于忽略删除

您可以说“
git add--ignore remove
”来 如果确实需要,请仅在
中添加添加或修改的路径


警告()。
我修改了我的答案,改为说
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.


正如我在“

添加-u
中提到的,它也将进行阶段删除。只有在跟踪删除的文件时;)add-u是commit-a的等价物,有点像(在它操作的文件中)。Bannier:如果删除的文件没有被跟踪,那么就没有什么可以从暂存区域删除的了?谢谢你的回答和一个例子。“嘿!”这句话对我真的很有帮助。@TK:是的,Benjol(这个例子很好。似乎我们不需要把
(pathspec)放进去)使用Git 2.x。我测试时可以找到它。另外,在Git 2.0中,
Git add。
添加索引的所有更改,因为
-默认为一个
选项。检查这个答案@Sangdol谢谢你的提醒。我已经相应地更新了答案。也许可以涵盖Git 2.0和Git之前版本之间的差异?
git add -u 
git add .
git commit
git status
//hey! why didn't it commit my deletes?, Oh yeah, silly me
git add -u .
git commit --amend