我已经分支了一个项目(来自分支A),似乎由于某种原因它继续在另一个分支(B)。
我尝试将我的fork(M)与新分支(B)合并,但这导致了很多冲突。冲突是因为新分支(B)分叉了较旧的分支(O),而A的部分变更未提交给B.
现在我希望我的所有更改(在分支M中)与新分支B合并而没有冲突,取消A对fork M中的原点O所做的所有更改。
我想要的是红色。我该怎么做?
答案 0 :(得分:1)
一个选项是从M
分支中挑选A
提交之后发生的B
分支中的提交范围:
git checkout B
git cherry-pick 2an38xma..f8s3kow2
此处2an38xma
是A
分支中M
提交的SHA-1哈希或唯一标识符。您可以通过从git log
分支键入A
并向下滚动直到找到A
提交来找到此提交哈希。 git cherry-pick
中使用的范围表示在<{em> A
提交之后逐个提交提交,直到f8s3kow2
中的最终提交M
为止分支。
请记住,每次提交都可能会出现合并冲突。
答案 1 :(得分:1)
首先使用M
制作原始git branch M.old M
分支的副本,这样如果最终结果不符合您的要求,您就可以重新开始。
然后你可以将你的M分支改为从B开始
git rebase --onto B A M
这应该可以为您提供图纸中的红色M分支。
A
这里标记了您想要考虑更改的开始(不包括)和M
端点(包括),它将更新为rebase结果。