我有一个像这样的主分支..
A -- B -- C -- D -- E -- HEAD
是否有任何命令可以删除旧提交之一并保留其他提交,比如提交C?
最后变得像这样
A -- B -- D -- E -- HEAD
我知道我们可以使用反向补丁并应用带有反向补丁的新提交来删除提交C,但树结构不会那么清晰,看起来很笨重,即。
A -- B -- C -- D -- E -- C(apply reverse patch) -- HEAD
有谁知道?
答案 0 :(得分:30)
使用交互式rebase。例如,返回5次提交:
git rebase -i HEAD~5
然后在弹出的编辑器中,删除包含要删除的提交的行。
答案 1 :(得分:5)
交互式rebase可以工作,但只需一个命令即可:
git rebase --onto B C
仍然可以看到关于“交互式rebase”答案的评论。它们也适用于此。