与上游回购同步分支

时间:2016-09-13 20:37:19

标签: git github git-fork

我分叉了一个repo并在我的fork中创建了一个名为B的新分支。在处理了一段时间后,我想为B创建一个拉取请求,但原始仓库已经提交。目前该分支是#34; 3提交提交,5提交背后原始"。

如何确保在创建Pull请求时没有冲突?

我知道这听起来像是一个重复的问题,但我无法找到/无法理解网络上的任何解决方案。

1 个答案:

答案 0 :(得分:2)

首先,需要考虑的是,如果您没有更改原始仓库中更改的任何相同代码行,则可能不存在任何合并冲突。如果是这种情况,那么即使您的分支落后,维护者也应该能够使用GitHub的合并按钮。

如果不是这种情况,或者你仍然想确保你的分支是最新的,那么继续阅读。

您的回购可能看起来像这样:

[('Catherine', 2), ('Christopher', 1), ('John', 3)] 

(请例如A--B--C--D--E--F [master] \ G--H--I [branch B] 查看您的回购的类似输出。)

您有两种选择:合并或rebase。检查仓库中的git log --all --oneline --decorate --graph文件是否存在,因为项目通常会有关于您应该使用哪个选项的规则或指南。

合并

要一次解决所有冲突,您可以将原始仓库中的CONTRIBUTING合并到您的分支中。你会这样做:

master

如有必要,解决所有冲突并提交。

您的历史将如下所示:

git checkout B
git merge --no-ff master

衍合

为避免合并提交A--B--C--D--E--F [master] \ \ G--H--I--J [branch B] ,您可以将分支机构改为J

master

您的历史将如下所示:

git checkout B
git rebase master

例如A--B--C--D--E--F [master] \ G'--H'--I' [branch B] 表示提交具有与以前相同(或类似)的内容,但由于它们具有新的父提交,因此它们在技术上是新的提交(具有新的SHA1哈希)。

合并的好处是您可以立即解决所有冲突,但这可能会导致更糟糕的历史。变基的好处在于它可以带来更清晰的历史,但由于它涉及重写历史,如果您已经发布了分支,则可能会导致冲突。再次,检查项目是否有任何关于使用哪些规则/指南。