# 合并冲突

确定并解决 Git 中的合并冲突，以确保顺利的分支集成和成功的拉取请求合并。

Git 通常可以自动解决分支之间的冲突并合并它们。 通常，更改位于不同行或不同文件中，因此 Git 可以在无帮助的情况下合并它们。 有时，竞争性更改需要你的帮助。 当用户对同一文件的同一行进行更改，或者当一个人编辑文件，而另一个人删除同一文件时，通常会发生合并冲突。

合并冲突阻止合并，因为 Git 无法安全地选择要保留的冲突内容版本。 必须先解决所有合并冲突，然后才能合并拉取请求 GitHub。 如果拉取请求在比较分支和基分支之间存在合并冲突，则会停用 **合并拉取请求** 按钮，直到冲突得到解决。

## 解决合并冲突

解决合并冲突意味着选择合并分支后应显示的最终内容。 正确的工具取决于冲突的类型。

* 简单的行冲突通常可以在 GitHub 上解决。 请参阅“[Resolving a merge conflict on GitHub](/zh/enterprise-server@3.21/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github)”。
* 必须在本地克隆中解决更复杂的冲突，并将其推送回拉取请求分支。 请参阅“[Resolving a merge conflict using the command line](/zh/enterprise-server@3.21/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line)”。

在命令行上，Git 会告诉你合并何时无法自动完成。 在解决冲突并提交该解决方案之前，您无法推送合并结果。

```shell
$ 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
```

## 延伸阅读

* [合并拉取请求](/zh/enterprise-server@3.21/pull-requests/reference/pull-request-merges)
* [拉取请求](/zh/enterprise-server@3.21/pull-requests/reference/pull-requests)
* [Resolving a merge conflict using the command line](/zh/enterprise-server@3.21/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-using-the-command-line)
* [Resolving a merge conflict on GitHub](/zh/enterprise-server@3.21/pull-requests/how-tos/merge-and-close-pull-requests/resolving-a-merge-conflict-on-github)