我知道如何使用git rebase --interactive
从git历史记录中删除特定提交。
我的问题涉及更复杂的案例,有这样的历史:
A--X--B--C--D
\
E--F
我想删除提交X
。问题是,在这种情况下,有两个或更多分支与父母(在这种情况下为B
)在其历史记录中有X
,因此单个git rebase -i
将无法执行此操作(至少我不知道如何)。
是否有一种简单的方法可以删除X
,或者我是否必须依赖自己的所有分支,可能还有shell脚本?
答案 0 :(得分:3)
不幸的是,在这种情况下,Git并不容易。首先通过删除提交X在D分支上执行交互式rebase。
您将拥有以下历史记录:
A--X--B
\ \
\ E--F
\
B'-C'-D'
然后你需要用以下方法将F分支重新定义到B':
git rebase --onto B' B F
(用ids替换提交名称)
最终会以
结束 A--B'-C'-D'
\
E'--F'