删除分支的第一次推送提交

我有一种情况,我想撤消分支上的第一次提交。 一个简单的解决方案是创建一个新分支,然后将除第一个提交以外的所有提交从我的第一个分支移至新分支,然后删除旧分支。

我想这可以通过简单地弯曲分支的底部来更好地完成。这样的事情可能吗?我试图勾勒出它:

当前:

master   a - b 
branch1       \ revertB - c - d

通缉:

master   a - b 
branch1       \ - c - d 

可能?:

master a - b ---------------------
skip        \ revertB              \
branch1                             \ - c - d

我不需要revertB提交。 我怎样才能做到这一点,或者这是不好的做法? 提前致谢 :)

评论
  • zfugit
    zfugit 回复

    git rebase --onto b c d

    This rebases all the commits from c to d onto b.

    Git rebase is powerful. Especially interactive mode (git rebase -i). Learn to use it!

  • 美丽的另一端
    美丽的另一端 回复

    “可能?”

    绝对是

    一种实现它的方法:

    # create your "skip" branch
    git checkout -b skip <commitHash of "revertB">
    
    # repair branch1 by resetting to master then recreating commits c and d
    git checkout -B branch1 master
    git cherry-pick c d