当您修改工作目录中的文件时,git 会告诉您使用 "git add" 来暂存文件。
当您向工作目录中添加新文件时,git 会告诉您使用 "git add" 开始跟踪。
我对这两个概念有些困惑,因为我认为跟踪文件的更改与将其暂存以进行提交是不同的。
Git基本上有4种主要状态用于在您的本地存储库中的文件:
git add <file>
,它会变成:git commit
,它会变成:git add
将其暂存。正如您所看到的,git add
将跟踪未跟踪的文件,并暂存任何文件。
另外: 您可以使用git rm --cached filename
取消跟踪一个未提交的文件,并使用git reset HEAD <file>
取消暂存一个已暂存的文件。
Git有一个称为“索引”的概念。要创建新的提交,您需要使用内容填充索引,这些内容将出现在下一次提交中。这意味着您必须明确告诉Git希望出现在下一次提交中的更改,方法是使用git add
。(使用git add -p
添加单个文件块)
对于Git来说,无论是仅更新文件(“暂存更改”)还是添加新文件的全部内容(“开始跟踪文件”),都不会产生任何影响 - 两种情况下,Git的索引看到的都是新更改的添加。
当您添加一个文件开始跟踪时,它也会将其内容提交到暂存区。
如果您想要添加一个文件用于跟踪但不进行暂存操作,您可以使用
git add -N
你所提到的两个git add
步骤本质上是相同的,只是因为它们的到达路径不同而有不同的解释。
git add
简单地告诉git,所提供的文件是你希望在源代码控制存储库中以其当前精确形式(其内容)拥有的文件。此时,git将对该文件进行快照(并在其索引中保留一个注释),以便在您准备好所有文件的更改并添加(即在暂存区中汇总)后,为您的git commit
(附带适当的消息;-)做好准备。
一旦git被告知了该文件(例如@avh的-N
选项),它将通过各种命令(如git status
)的幌子跟踪文件的更改。因此,稍后,当您不再想要跟踪某个文件时,必须明确告诉git(git rm <file>
),并且您可以在add
提交版本之后继续编辑文件(本地)。几乎显然(或者也许不是),您可以在提交最终版本之前多次git add
一个文件。