【问题标题】:Delete from history commits ahead of HEAD在 HEAD 之前从历史提交中删除
【发布时间】:2015-12-22 09:46:42
【问题描述】:

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

我所拥有的

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

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

我们希望我们的主分支历史中的所有提交都是我们项目的功能副本,因此我决定更改历史以将 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

【问题讨论】:

    标签: git github merge pull-request revert


    【解决方案1】:

    此时revert-pull-request-1 不只是另一个分支吗?删除该分支应该会删除 C3C1' 提交,留下你想要的历史记录。

    【讨论】:

    • 我认为我无法删除它,因为 GitHub 网络界面将其显示为“合并”。但是,实际上我可以做到,而且成功了!故事的寓意:更喜欢手动合并您的拉取请求。
    猜你喜欢
    • 2015-12-01
    • 2015-09-02
    • 2011-10-26
    • 1970-01-01
    • 2013-01-23
    • 2015-02-23
    • 2023-01-22
    • 2019-11-14
    • 2014-11-20
    相关资源
    最近更新 更多