在 HEAD 之前从历史提交中删除

Delete from history commits ahead of HEAD

在GitHub中,我直接使用网络界面合并了一个拉取请求。将合并的拉取请求拉到我的本地后,我注意到代码中有一个严重的错误。所以,我回到 github 的网站并恢复了拉取请求。此操作生成了一个新的拉取请求,我立即将其合并回 master。

我有什么:

--C1-----C3-------C1'  : master
   \    /  \      /
    -C2-    \    /     : bug-branch
             -C4-      : revert-pull-request-1

其中C1是合并前的状态,C3合并包含bug的分支(C2), 和 C1' 我的还原合并。因此,C1'C1 具有相同的代码。 C4 由 GitHub 自动生成。

我们希望 master 分支历史中的所有提交都是我们项目的功能副本,因此我决定更改历史以从 master 分支中获取 C3。 (我的团队成员对此表示同意)。

所以,我把 HEAD 向后移动了两次,力推了它。

将 HEAD 向后移动 2 次后得到的结果:

----C1             : master
     |\
     | -C2         : bug-branch  
     |    \
     |-----C3--C1' : revert-pull-request-1

现在我想彻底摆脱C1'C3。但我担心再次移动 HEAD 只会把事情搞得更糟。

如何删除 C3C1'C4 怎么了?

我想要的:

----C1 : master
      \
       C2 : bug-branch

现在 revert-pull-request-1 不就是另一个分支吗?删除该分支应该删除 C3C1' 提交,留下您想要的历史记录。