寻找帮助清理我的分支。我在太多的小修补上削减了我的工作,并且在master
上有太多合并用于这些修复。我想把我的修复程序收集到一个更大的修复分支。由此:
(C0)<----(C1)<----(C2)<----(C3) master
\ / \ /
\(F1)/ \(F2)/
C2, C3 - merges from small fixes
对此:
(C0)<----(C1)<------------(C4') master
\ /
\(F1)<----(F2)/
有可能吗?
答案 0 :(得分:1)
可以做你想做的事,但请记住,如果其他人与你分享master
分支,并且他们已经拥有历史的旧版本,并且他们已经完成了更多的工作(提交),然后你将迫使他们不得不重新同步他们的工作与新的历史。
执行以下操作:
git checkout -b new-branch F1
git cherry-pick F2
git checkout master
git reset --hard C1
git merge --no-ff new-branch
# If you need to push to a remote, you'll need to force push
# if the old history was already pushed:
git push <remote> head --force
答案 1 :(得分:0)
如果F1
位于feature-a
中的分支F2
和feature-b
中git checkout feature-b
git rebase feature-a
git checkout feature-a
git merge-feature-b
,则以下内容应该有效:
feature-b
它会修复feature-a
上feature-b
中的所有修补程序,然后进行快进合并以包含git branch -d feature-b
分支中的提交。
现在您可以删除过时的feature-b分支,因为now-a包含其所有提交
{{1}}