我有一个类似这样的主分支...
A -- B -- C -- D -- E -- HEAD
有没有一种命令可以删除旧提交中的某个提交并保留其他提交,比如提交C?
最终变成这样:
A -- B -- D -- E -- HEAD
我知道我们可以使用反向补丁并应用一个新的反向补丁提交来删除提交 C,但是树形结构将不会那么清晰,看起来很笨重,即:
A -- B -- C -- D -- E -- C(apply reverse patch) -- HEAD
有人知道吗?
我有一个类似这样的主分支...
A -- B -- C -- D -- E -- HEAD
有没有一种命令可以删除旧提交中的某个提交并保留其他提交,比如提交C?
最终变成这样:
A -- B -- D -- E -- HEAD
我知道我们可以使用反向补丁并应用一个新的反向补丁提交来删除提交 C,但是树形结构将不会那么清晰,看起来很笨重,即:
A -- B -- C -- D -- E -- C(apply reverse patch) -- HEAD
有人知道吗?
使用交互式 rebase。例如,要返回 5 次提交:
git rebase -i HEAD~5
然后在弹出的编辑器中,删除包含您想要删除的提交的那一行。
交互式变基是有效的,但只需一个命令即可完成:
git rebase --onto B C
仍然可以看到“交互式变基”答案中的评论。这些评论也适用于此处。
git help revisions
以获取标识特定提交的许多其他方法。 - Ryan Stewart