跳至主要内容

在 GitHub 上解决合并冲突

您可以使用冲突编辑器在 GitHub 上解决涉及竞争性行更改的简单合并冲突。

您只能在 GitHub 上解决由竞争性行更改引起的合并冲突,例如,当人们在 Git 仓库中不同分支上对同一文件的同一行进行不同的更改时。对于所有其他类型的合并冲突,您必须在命令行上本地解决冲突。有关更多信息,请参阅“使用命令行解决合并冲突”。

警告

当您在 GitHub 上解决合并冲突时,拉取请求的整个基分支将合并到HEAD 分支。确保您确实要提交到此分支。如果 HEAD 分支是仓库的默认分支,则可以选择创建一个新分支作为拉取请求的 HEAD 分支。如果 HEAD 分支受保护,则您将无法将您的冲突解决合并到其中,因此系统会提示您创建一个新的 HEAD 分支。有关更多信息,请参阅“关于受保护分支”。

  1. 在您的仓库名称下,单击 拉取请求.

    Screenshot of the main page of a repository. In the horizontal navigation bar, a tab, labeled "Pull requests," is outlined in dark orange.

  2. 在“拉取请求”列表中,单击您要解决的合并冲突的拉取请求。

  3. 在拉取请求的底部附近,单击**解决冲突**。

    Screenshot of a warning that a pull request has a merge conflict. The "Resolve merge conflicts" button is outlined in dark orange.

    注意

    如果**解决冲突**按钮处于禁用状态,则拉取请求的合并冲突过于复杂,无法在 GitHub 上解决。您必须使用其他 Git 客户端或使用命令行上的 Git 来解决合并冲突。有关更多信息,请参阅“使用命令行解决合并冲突”。

  4. 决定是否只保留您分支的更改,只保留其他分支的更改,或者进行全新的更改,这可能包含来自两个分支的更改。删除冲突标记<<<<<<=======>>>>>>>并进行您希望在最终合并中进行的更改。

  5. 如果您的文件中有多个合并冲突,请向下滚动到下一组冲突标记,并重复步骤四和五以解决您的合并冲突。

  6. 解决完文件中的所有冲突后,单击**标记为已解决**。

    Screenshot of the editor to resolve a merge conflict in a pull request. The "Mark as resolved" button is outlined in dark orange.

  7. 如果您有多个存在冲突的文件,请选择页面左侧“冲突文件”下要编辑的下一个文件,然后重复步骤四到七,直到解决所有拉取请求的合并冲突。

  8. 解决所有合并冲突后,单击**提交合并**。这会将整个基分支合并到您的 HEAD 分支。

    Screenshot of the editor to resolve a merge conflict in a pull request. The "Commit merge" button is outlined in dark orange.

  9. 如果出现提示,请查看您正在提交到的分支。

    如果 HEAD 分支是仓库的默认分支,您可以选择使用您为解决冲突所做的更改来更新此分支,或者创建一个新分支并将其用作拉取请求的 HEAD 分支。

    如果选择创建新分支,请输入分支名称。

    如果拉取请求的 HEAD 分支受保护,则必须创建一个新分支。您将无法选择更新受保护的分支。

    单击**创建分支并更新我的拉取请求**或**我已理解,继续更新 BRANCH**。按钮文本对应于您正在执行的操作。

  10. 要合并您的拉取请求,请单击**合并拉取请求**。有关其他拉取请求合并选项的更多信息,请参阅“合并拉取请求”。

进一步阅读