Skip to main content

关于合并冲突

在合并竞争提交的分支时会发生合并冲突,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

其他阅读材料

  •         [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges)
    
  •         [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
    
  •         [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line)
    
  •         [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github)