我有一个本地及其相应的github repo。
我有一些提交A <- B <- C <- D
A是最新的。
这是两个回购的情况。我想删除提交C,好像它从未发生过一样。
所以它应该像git log
A <- B <- D
两个回购。
我尝试了git reset --soft <sha-commit-C>
,现在卡住了。我看不到A, B
。在做任何进一步的步骤之前,我想完全确定我知道我在做什么。
git reflog
给了我:
git reflog
73ea54d HEAD@{0}: reset: moving to 73ea54d8
a594699 HEAD@{1}: rebase -i (finish): returning to refs/heads/unique_ptr_release
a594699 HEAD@{2}: checkout: moving from unique_ptr_release to a594699fb6f7d85bc8
a594699 HEAD@{3}: checkout: moving from unique_ptr_release to unique_ptr_release
a594699 HEAD@{4}: commit (merge): Merge branch 'master' into unique_ptr_release
HEAD@{4}
是reset --soft
命令之前我的头。
我如何摆脱这种情况?
答案 0 :(得分:6)
在您提交A-B-C-D
的情况下,并想要删除C,请尝试:
git rebase -i HEAD~3
它会通过编辑器显示你提交的最后3个(我的是vim),
只需删除(在vim:dd
中)要删除的提交行,
然后保存它(在vim中::wq
)。
完成,查看git log
,您会看到C
提交已被删除。
*不要忘记备份您的代码或.git文件夹。
答案 1 :(得分:0)