我有一个git提交历史,如下所示:
U
/
A---B---C---D---E master没有任何东西指向提交U,但我知道它的散列。我如何从我的存储库中完全删除这个提交,就像它从来不存在一样?我是唯一一个使用这个回购的人。
我尝试使用git rebase,但它既可以删除分支的一部分,也可以移动提交,但似乎无法删除单个提交。
如果我先执行git checkout <hash>,然后执行git reset --hard HEAD~1,我就看不到提交了。它实际上是完全消失了,还是仍然隐藏在回购中?
发布于 2012-12-11 10:12:44
最终它会被git清理掉,但是你可以查看git gc来强制执行垃圾收集。
clean命令则不同,它不会为您处理此问题。
发布于 2015-03-23 12:51:52
如here所述,只需使用
git reflog expire --expire-unreachable=now --all
git gc --prune=nowgit reflog expire --expire-unreachable=now --all在reflog中删除所有不可达提交的引用。
git gc --prune=now会自行删除提交。
注意:只使用git gc --prune=now将不起作用,因为这些提交仍然在reflog中被引用。因此,清除reflog是必需的。
https://stackoverflow.com/questions/13812103
复制相似问题