如何删除已删除的git子树文件夹的历史记录?

时间:2013-04-08 22:20:23

标签: git git-commit git-subtree

我使用git-subtree添加了一个git存储库。问题是我在使用git-subtree添加存储库之前进行了硬重置。现在,提交历史记录仍在存储库中,但它与master断开连接。

知道怎么删除吗?我试过git rm - 没有运气。

1 个答案:

答案 0 :(得分:4)

要立即删除已无法访问的提交(可能是子树提交的情况),您可以使用以下命令:

git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune

git gc不会立即收集无法访问的提交,因为这些(在默认配置中)首先需要到期,然后才能与其他可达提交打包在一起。这种情况会在一段时间后自行发生,或者您可以使用上述命令强制执行此操作。

还要考虑到对子树提交的任何引用都会阻止它们被收集,这包括分支,标记和reflog引用。确保你真的没有悬挂对这些提交的引用。

以下是关于如何处置无法访问提交的更详细的问题:

Garbage collect commits in git