从历史记录中删除一次提交

时间:2020-07-17 21:47:56

标签: git

我知道这是反模式,但是我有一个LOCAL分支(并且没有其他分支基于此分支):

D <-- C <-- B <-- A <-- HEAD

我没有测试就做到了,我需要变得像这样

D <-- C <-- A <-- HEAD(我在B中添加了一些要删除的软件包)

然后(如果一切正常),我想这样做:

D <-- C <-- A <-- B <-- HEAD,因此,如果我可以保留B中所做的更改,以便能够选择是否要重新应用这些更改,那将是很棒的选择。

2 个答案:

答案 0 :(得分:2)

  1. git rebase -i D,其中D是落实D的哈希(commit-ish)。

    例如,这会打开您的编辑器,其中包含一个包含D的提交列表的文件

    pick A
    pick B
    pick C
    pick D
    
  2. 按照文件底部注释中的说明,根据需要删除或重新排列提交,然后保存并关闭文件。

  3. 将按所需顺序逐一应用提交,如果在应用提交时遇到任何问题,将停止并指导您解决问题。

答案 1 :(得分:2)

git tag save-B B
git rebase --onto B~ B..

,然后当您想B返回时,可以选择save-B或合并它。