不使用反向补丁从分支中删除旧的Git提交?

时间:2011-07-20 15:30:54

标签: git git-rebase

我有一个像这样的主分支..

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

是否有任何命令可以删除旧提交之一并保留其他提交,比如提交C?

最后变得像这样

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

我知道我们可以使用反向补丁并应用带有反向补丁的新提交来删除提交C,但树结构不会那么清晰,看起来很笨重,即。

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

有谁知道?

2 个答案:

答案 0 :(得分:30)

使用交互式rebase。例如,返回5次提交:

git rebase -i HEAD~5

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

答案 1 :(得分:5)

交互式rebase可以工作,但只需一个命令即可:

git rebase --onto B C

仍然可以看到关于“交互式rebase”答案的评论。它们也适用于此。