用几个分支机构在GIT历史上删除特定的提交



我知道如何使用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'

最新更新