关于git rebase:在不使用反向补丁的情况下从分支中删除旧的Git提交?

Remove an old Git commit from a branch without using a reverse patch?

本问题已经有最佳答案,请猛点这里访问。

我有一家这样的总店……

1
A -- B -- C -- D -- E -- HEAD

是否有任何命令删除一个旧的提交并保留其他的提交,比如commit c?

终于变成这样了

1
A -- B -- D -- E -- HEAD

我知道我们可以使用一个反向补丁并应用一个新的带有反向补丁的commit来删除commit c,但是树结构不会那么清晰,看起来很笨重,也就是说。

1
A -- B -- C -- D -- E -- C(apply reverse patch) -- HEAD

有人知道吗?


使用交互式钢筋网。例如,要返回5个提交:

1
git rebase -i HEAD~5

然后在弹出的编辑器中,删除包含要删除的提交的行。


交互式钢筋网可以工作,但只需一个命令即可完成:

1
git rebase --onto B C

仍然可以看到关于"交互式钢筋网"答案的评论。它们也适用于这里。