Ars*_*Ali 8 git version-control branch github branching-and-merging
我有两个分支:开发和bug_fixes,我偶然在两到三周前在bug_fixes中合并了开发分支,并且从那时起就开始研究bug_fixes,并且我已经推送了bug_fixes中的更改.
现在,我需要取消合并开发分支.我想要一个没有提交形式开发分支的纯bug_fixes分支.通过谷歌搜索,我想出了以下场景:
1)恢复在bug_fixes分支中合并开发分支的提交,但它部分地完成了工作.来自开发分支的提交仍然可以在bug_fixes分支中看到,这是不需要的.
2)Rebase,并删除执行合并的提交,但它仍然具有第1点中描述的相同问题.bug_fixes分支仍包含来自开发分支的提交.
有没有办法可以删除合并提交,并且bug_fixes分支表单开发分支中的所有提交也会被删除?或者,这是不可能的?
如果您知道哪些提交来自开发分支(除了合并提交之外),您可以从最后一次错误修复提交中进行git rebase -i(交互式rebase):
b--b--(B)--M--d--b--d--b--b (bugfix)
/
d--d--d (devel)
git checkout bugfix
git rebase -i (B)
# drop M, d, and d
b--b--(B)--b'--b'--b' (bugfix)
d--d--d (devel)
Run Code Online (Sandbox Code Playgroud)
更复杂的替代方案是a git filter-branch,但希望交互式rebase就足够了.
git rebase -p -i (b)
Run Code Online (Sandbox Code Playgroud)
-p 允许保留合并提交.