清理分支有太多小合并

时间:2013-09-08 16:50:50

标签: git

寻找帮助清理我的分支。我在太多的小修补上削减了我的工作,并且在master上有太多合并用于这些修复。我想把我的修复程序收集到一个更大的修复分支。由此:

(C0)<----(C1)<----(C2)<----(C3)   master
           \      / \      /
            \(F1)/   \(F2)/

    C2, C3 - merges from small fixes

对此:

(C0)<----(C1)<------------(C4')   master
           \               /
            \(F1)<----(F2)/

有可能吗?

2 个答案:

答案 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中的分支F2feature-bgit checkout feature-b git rebase feature-a git checkout feature-a git merge-feature-b ,则以下内容应该有效:

feature-b

它会修复feature-afeature-b中的所有修补程序,然后进行快进合并以包含git branch -d feature-b 分支中的提交。

现在您可以删除过时的feature-b分支,因为now-a包含其所有提交

{{1}}