跳至主要内容

关于合并冲突

当你合并具有竞争提交的分支时,就会发生合并冲突,并且 Git 需要你的帮助来决定在最终合并中纳入哪些更改。

Git 通常可以解决分支之间的差异并自动合并它们。通常,更改位于不同的行,甚至不同的文件中,这使得计算机很容易理解合并。但是,有时会出现 Git 无法在没有你的帮助的情况下解决的竞争更改。通常,当人们对同一文件的同一行进行不同的更改,或者当一个人编辑文件而另一个人删除同一文件时,就会发生合并冲突。

在 GitHub 上合并合并请求之前,你必须解决所有合并冲突。如果你的合并请求中的比较分支和基础分支之间存在合并冲突,则可以在合并合并请求按钮上方查看具有冲突更改的文件列表。在解决比较分支和基础分支之间的所有冲突之前,合并合并请求按钮处于停用状态。

解决合并冲突

要解决合并冲突,你必须手动编辑冲突文件以选择要在最终合并中保留的更改。有几种不同的方法可以解决合并冲突

  • 如果你的合并冲突是由竞争行更改引起的,例如当人们在 Git 存储库的不同分支上对同一文件的同一行进行不同的更改时,你可以使用冲突编辑器在 GitHub 上解决它。有关详细信息,请参阅“在 GitHub 上解决合并冲突”。
  • 对于所有其他类型的合并冲突,你必须在存储库的本地克隆中解决合并冲突,并将更改推送到 GitHub 上的分支。你可以使用命令行或类似 GitHub Desktop 的工具来推送更改。有关详细信息,请参阅“使用命令行解决合并冲突”。

如果您在命令行上遇到合并冲突,则在您在计算机上本地解决合并冲突之前,您无法将本地更改推送到 GitHub。如果您尝试合并命令行上存在合并冲突的分支,您将收到一条错误消息。有关详细信息,请参阅“使用命令行解决合并冲突”。

$ git merge BRANCH-NAME
> Auto-merging styleguide.md
> CONFLICT (content): Merge conflict in styleguide.md
> Automatic merge failed; fix conflicts and then commit the result

延伸阅读