虽然你在贡献代码时创建了自己的冒险故事
但是你可能会发现你的 pull 请求因为存在合并冲突而无法合并
下面我们将介绍出现这一情况的原因及解决方案
假设你分叉了 GitHub 上的原始版本库 克隆了你的分叉
然后对新分支做出更改 并将该更改推送到你的分叉上
与此同时 其他人更改了 GitHub 上的原始版本库
如果他们的更改与你的更改之间存在合并冲突
则系统无法自动合并你的 pull 请求
因为无法在 GitHub 网站上解决合并冲突
所以你需要在计算机本地的克隆中解决冲突
为此 你需要将原始版本库中的冲突更改放入你的本地版本库中
你可以通过添加远程版本库来完成这一步
还记得你已经创建了一个叫做 origin 的远程版本库
并指向你的分叉
但是你依然需要添加一个指向原始版本库的远程版本库
很多人将这类版本库命名为 upstream
添加和取回 upstream remote 会向你的本地版本库中
添加 upstream/master 等分支
使你能够将 upstream 分支与你的本地分支合并
例如 我创建了一个 pull 请求来向故事页面中有火的地方
添加 stop-drop-roll 选项
与此同时 同一文件出现了另一个更改
添加了一个选项:打开巧克力末喷洒器
这一更改与我的更改存在冲突
所以我需要解决该冲突 然后才能合并我的 pull 请求
在这个图表中 这是添加巧克力末喷洒器的 commit
还有这个
我的更改是添加 stop-drop-roll 选项
这些 commit 在所有版本中都是一样的
因为我在单独的分支中创建了我的更改
我需要使我的 master 分支与原始版本库中的 master 分支保持一样
所以我需要运行 git pull upstream/master 使我的 master 分支
更新为包含原始版本库中的最新 commit
然后将该 master 分支与我的更改分支合并
然后将更改分支和 master 分支推送到我的分叉上
我不需要推送 master 分支 但是觉得最好这么做
因为整个流程仅仅涉及到你已经学过的命令
所以在我在命令行中演示如何操作之前
请你私底下自己尝试执行这一流程
提醒下 你需要执行以下步骤
首先 将原始版本库作为 remote 添加到你的克隆中
然后将原始版本库中的 master 分支拉取到
克隆中的 master 分支上
将 master 分支合并到本地的更改分支中
解决任何合并冲突
最后 将你的更改分支推送到你的分叉中
这样会自动更新你的 pull 请求
如果自动合并时遇到问题
我会在解决方案中演示如何完成这一流程
如果你没有遇到该问题 因为你的 pull 请求不存在合并冲突
建议你通过做出新的更改
并且不对该更改提出 pull 请求 练习相关流程
然后你可以等待其他人做出更改
练习使你的分叉保持最新状态
即使没有出现合并冲突 你依然可以练习合并流程
完成这一流程后 请选中此方框