Git 通常可以自动解决分支之间的冲突并合并它们。 通常,更改发生在不同的行或不同的文件中,这让计算机能够更轻松地处理合并。 但是,有时会存在冲突的变更,Git 无法在没有您的帮助下解决。 通常,当人们对相同文件的相同行进行不同的更改时,或者一个人编辑文件而另一个人删除同一文件时,就会发生合并冲突。
必须先解决所有合并冲突,然后才能合并拉取请求 GitHub。 如果在拉取请求中的比较分支与基本分支之间存在合并冲突,你可以在“合并拉取请求”按钮上方查看包含冲突更改的文件列表。 在解决比较分支与基础分支之间的所有冲突之前,“合并拉取请求”**** 按钮将保持停用状态。
解决合并冲突
要解决合并冲突,必须手动编辑冲突的文件以选择要保留在最终合并中的更改。 解决合并冲突有多种不同的方式:
-
如果合并冲突是由于行更改冲突引起的,例如当不同分支上的用户对 Git 存储库中同一文件的同一行进行了不同更改时,可以在 GitHub 上使用冲突编辑器进行解决。 有关详细信息,请参阅“解决GitHub上的合并冲突”。
-
对于所有其他类型的合并冲突,必须在存储库的本地克隆中解决合并冲突,并将更改推送到分支。GitHub 可以使用命令行或类似 GitHub Desktop 的工具来推送更改。 有关详细信息,请参阅“使用命令行解决合并冲突”。
-
对于任何类型的合并冲突,如果你有权访问 Copilot云代理 并且该功能已为存储库启用,则你可以单击合并框中的 用Copilot修复 来让 Copilot 为你解决这些冲突。 Copilot 将分析冲突的更改,解决冲突,并验证生成、测试和 Linter 是否仍然通过。 有关详细信息,请参阅“查看来自 Copilot 的输出”。
如果在命令行上发生合并冲突,则在本地计算机上解决合并冲突之前,无法将本地更改推送到 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