YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Chinese, Simplified subtitles

← New: Keeping a Fork Up-To-Date

Get Embed Code
5 Languages

Showing Revision 1 created 08/02/2016 by Udacity Robot.

  1. 虽然你在贡献代码时创建了自己的冒险故事

  2. 但是你可能会发现你的 pull 请求因为存在合并冲突而无法合并
  3. 下面我们将介绍出现这一情况的原因及解决方案
  4. 假设你分叉了 GitHub 上的原始版本库 克隆了你的分叉
  5. 然后对新分支做出更改 并将该更改推送到你的分叉上
  6. 与此同时 其他人更改了 GitHub 上的原始版本库
  7. 如果他们的更改与你的更改之间存在合并冲突
  8. 则系统无法自动合并你的 pull 请求
  9. 因为无法在 GitHub 网站上解决合并冲突
  10. 所以你需要在计算机本地的克隆中解决冲突
  11. 为此 你需要将原始版本库中的冲突更改放入你的本地版本库中
  12. 你可以通过添加远程版本库来完成这一步
  13. 还记得你已经创建了一个叫做 origin 的远程版本库
  14. 并指向你的分叉
  15. 但是你依然需要添加一个指向原始版本库的远程版本库
  16. 很多人将这类版本库命名为 upstream
  17. 添加和取回 upstream remote 会向你的本地版本库中
  18. 添加 upstream/master 等分支
  19. 使你能够将 upstream 分支与你的本地分支合并
  20. 例如 我创建了一个 pull 请求来向故事页面中有火的地方
  21. 添加 stop-drop-roll 选项
  22. 与此同时 同一文件出现了另一个更改
  23. 添加了一个选项:打开巧克力末喷洒器
  24. 这一更改与我的更改存在冲突
  25. 所以我需要解决该冲突 然后才能合并我的 pull 请求
  26. 在这个图表中 这是添加巧克力末喷洒器的 commit
  27. 还有这个
  28. 我的更改是添加 stop-drop-roll 选项
  29. 这些 commit 在所有版本中都是一样的
  30. 因为我在单独的分支中创建了我的更改
  31. 我需要使我的 master 分支与原始版本库中的 master 分支保持一样
  32. 所以我需要运行 git pull upstream/master 使我的 master 分支
  33. 更新为包含原始版本库中的最新 commit
  34. 然后将该 master 分支与我的更改分支合并
  35. 然后将更改分支和 master 分支推送到我的分叉上
  36. 我不需要推送 master 分支 但是觉得最好这么做
  37. 因为整个流程仅仅涉及到你已经学过的命令
  38. 所以在我在命令行中演示如何操作之前
  39. 请你私底下自己尝试执行这一流程
  40. 提醒下 你需要执行以下步骤
  41. 首先 将原始版本库作为 remote 添加到你的克隆中
  42. 然后将原始版本库中的 master 分支拉取到
  43. 克隆中的 master 分支上
  44. 将 master 分支合并到本地的更改分支中
  45. 解决任何合并冲突
  46. 最后 将你的更改分支推送到你的分叉中
  47. 这样会自动更新你的 pull 请求
  48. 如果自动合并时遇到问题
  49. 我会在解决方案中演示如何完成这一流程
  50. 如果你没有遇到该问题 因为你的 pull 请求不存在合并冲突
  51. 建议你通过做出新的更改
  52. 并且不对该更改提出 pull 请求 练习相关流程
  53. 然后你可以等待其他人做出更改
  54. 练习使你的分叉保持最新状态
  55. 即使没有出现合并冲突 你依然可以练习合并流程
  56. 完成这一流程后 请选中此方框