如何刪除提交我有這種情況:喜歡這些
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