【发布时间】:2011-09-27 06:04:02
【问题描述】:
当您修改工作目录中的文件时,git 会告诉您使用“git add”来暂存。
当你向工作目录添加新文件时,git 会告诉你使用“git add”开始跟踪。
我对这两个概念有点困惑,因为我认为跟踪文件的更改与暂存文件以进行提交是不同的
【问题讨论】:
当您修改工作目录中的文件时,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 add 明确告诉 Git 您希望在下一次提交中出现哪些更改。 (git add -p 只添加单个帅哥)
无论您是只更新文件(»阶段更改«)还是添加新文件的全部内容(»开始跟踪文件«),这对 Git 都没有影响——这两次,所有 Git 的index sees 是增加了新的变化
【讨论】:
当您添加文件以开始跟踪时,它也会暂存其内容。
如果你想添加一个文件进行跟踪而不暂存它,你可以使用
git add -N
【讨论】:
您识别的两个git add 步骤本质上是相同的,只是由于它们的到达路线而有不同的解释。
git add 只是告诉 git,提供的文件是您希望在其源代码控制存储库中以其当前形式(其内容)拥有的文件。此时 git 将拍摄文件的快照(并在其索引中保留一个注释),以便在您准备好并添加对文件的所有更改(即在暂存区域中编组在一起)时,它已准备好,因为你的git commit(带有适当的消息;-)。
一旦 git 被告知该文件(例如 @avh 的 -N 选项),它会以各种命令(例如 git status)的名义注意到(跟踪)文件的更改。因此,稍后,您必须明确告诉 git 何时不再需要跟踪文件 (git rm <file>),并且在您拥有 added 将在犯罪。几乎很明显(或者可能不是),您可以在提交最终版本之前多次git add 一个文件。
【讨论】: