如何删除提交我有这种情况:喜欢这些
B C D
/-----*-----*-----*
-*---*---*---*---*---* branch A
A1 A2 A3 A4 A5 A6
承诺B,C,d不属于任何一间分行。如果我运行我的花式git lg
它不显示任何附近的分支标签(它为主,起源/主,HEAD,主题分支等)。如果我检查它们,我将移动到“脱离头部”状态(这是预期的,因为我可以检查它们的唯一方法是使用sha1)。我如何删除它们?
事情我试过到目前为止:
- 结帐承诺d和运行
git reset HEAD~3 --hard
,HEAD指针移动到A4,但提交还在这里。 - 手动运行
git reflog expire --expire=now --all
,依次为git gc --prune=now
,提交仍在此处。
发生了什么以及如何删除这些提交?
编辑:39d9480是有问题的提交之一。试图与合并基础实验,得到了这个输出:
git merge-base --is-ancestor 39d9480 master; echo $?
0
git merge-base --is-ancestor master 39d9480; echo $?
1
我没有看到这个承诺试图变基时。
如果你已经做了引用日志到期和GC,他们通常会在这一点上走了,暗示有*东西*仍然指向它们(例如'git filter-branch'留下的'refs/originals /'命名空间)。你的'git lg'别名扩展到了什么地方? – torek
'git log --graph --oneline --decorate' – 0xCAFEBABE
去检查参考/原件。 – 0xCAFEBABE