当你修改工作目录中的文件时,git 会告诉你使用“git add”来暂存。
当你向工作目录添加新文件时,git 会告诉你使用“git add”开始跟踪。
我对这两个概念有点困惑,因为我假设跟踪文件的更改不同于暂存文件以进行提交
Git 基本上有 4 个主要的文件在本地仓库中的状态:
git add <file>
,它变成:git commit
,它变成:git add
如您所见,
git add
将 track 未跟踪的文件和 stage 任何文件。
另外:您可以使用
git rm --cached filename
取消跟踪未提交的文件,并使用 git reset HEAD <file>
取消暂存文件
Git 有一个称为“索引”的概念。要创建一个新的提交,您可以用您希望在下一次提交中拥有的内容填充索引。这意味着您必须使用
git add
明确告诉 Git 您希望在下一次提交中显示哪些更改。 (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
ed 版本后继续编辑文件(本地)犯罪。很明显(或可能不是),您可以在提交最终版本之前多次git add
文件。