我知道如何使用git rebase --interactive
删除GIT历史记录的特定提交。
我的问题涉及此类历史更复杂的情况:
A--X--B--C--D
E--F
我想在哪里删除提交X
。问题是,在这种情况下,父母有两个或更多个分支(在这种情况下为B
)在其历史中具有X
,因此单个git rebase -i
不会做到这一点(至少我不知道如何)。
是否有一种简单的方法来删除X
,或者我必须依靠自己重新卸下所有分支,可能是使用Shell脚本?
不幸的是,在这种情况下,git并不容易。首先,通过删除commit x。
您将拥有以下历史记录:
A--X--B
E--F
B'-C'-D'
然后,您需要将F分支反射到B'上:
git rebase --onto B' B F
(用ID替换名称)
最终会出现
A--B'-C'-D'
E'--F'