我有这样的git提交历史记录:
U
/
A---B---C---D---E master
没有任何内容指向提交U
,但我知道它的哈希值。如何从我的存储库中完全删除此提交,就好像它从未存在过一样?我是唯一一个使用这个回购的人。
我尝试使用git rebase
,但是可以删除分支的某些部分或移动提交,但似乎无法删除单个提交。
如果我git checkout <hash>
然后git reset --hard HEAD~1
我再也看不到提交了。它实际上是完全消失还是仍然隐藏在回购中?
答案 0 :(得分:8)
如上所述here,只需使用
即可git reflog expire --expire-unreachable=now --all
git gc --prune=now
git reflog expire --expire-unreachable=now --all
删除reflog
中无法访问的所有提交。
git gc --prune=now
自行删除提交。
注意:仅使用git gc --prune=now
将无效,因为这些提交仍在reflog中引用。因此,清除reflog是必需的。
答案 1 :(得分:3)
最终它将被git清理,但你可以查看git gc
来实际强制垃圾收集。
clean
命令不同,不会为您处理此事。