我分叉了一个repo并在我的fork中创建了一个名为B
的新分支。在处理了一段时间后,我想为B
创建一个拉取请求,但原始仓库已经提交。目前该分支是#34; 3提交提交,5提交背后原始"。
如何确保在创建Pull请求时没有冲突?
我知道这听起来像是一个重复的问题,但我无法找到/无法理解网络上的任何解决方案。
答案 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哈希)。
合并的好处是您可以立即解决所有冲突,但这可能会导致更糟糕的历史。变基的好处在于它可以带来更清晰的历史,但由于它涉及重写历史,如果您已经发布了分支,则可能会导致冲突。再次,检查项目是否有任何关于使用哪些规则/指南。