在解决合并冲突之后,为什么需要执行“git add <文件>”命令?

4
我在查看了这个链接:如何解决Git中的合并冲突?以及其他很多链接之后,仍然来到这里。无论在哪里都提到,在文本编辑器中解决冲突后,需要执行“git add”。
我已经使用git几年了,通常情况下不太使用合并功能。因此,每隔一段时间,我就需要在Google上搜索解决合并后的方法。
因此,我认为自己没有完全理解git(或“git add”)的某些部分,导致我忘记需要执行“git add”。有人能否解释/指出我错过了什么,以便下一次合并时,在解决冲突后执行“git add”是合乎逻辑的事情?
2个回答

4

Git索引包含冲突文件的三个副本,它们是:

  1. 合并基础
  2. "我们"版本
  3. "他们"版本

您可以使用git ls-files -s命令查看它们。

带有合并标记的版本不会存储在索引中,它只存在于工作目录中。在合并和解决冲突文件后,git add将索引减少到一个副本。


2
@Devesh,这是一个很好的答案。但是为了更好地理解你必须在解决冲突后git add文件的原因是Git中的每个提交始终是从暂存区(“索引”)的状态创建的。换句话说,当您运行git commit时,Git会获取暂存区的状态并创建提交。未添加到git add的内容将不会成为提交的一部分。因此,您必须使用git add命令将带有冲突的新(已修复)文件状态添加到已解决冲突的文件中。 - kostix

1
当你遇到合并冲突时,Git会要求你自己解决冲突,因此你需要编辑文件。当你使用git add添加编辑后的文件时,这意味着你已经解决了冲突,就像在普通的Git工作流程中一样:你必须表明你想提交什么。也许把merge看作是一个变体的commit,它可以创建合并提交。唯一真正特别的是,当没有冲突时,它会在不使用git add的情况下提交更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接