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

pro*_*ave 4 git git-commit git-subtree

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

知道如何删除它吗?我试过 git rm --cached 没有运气。

Lop*_*Sae 5

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

git reflog expire --all --expire-unreachable=0
git repack -A -d
git prune
Run Code Online (Sandbox Code Playgroud)

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

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

这里还有一个关于如何处理无法访问的提交的更详细的问题:

git 中的垃圾收集提交

  • 这不起作用。当我执行“git log --all”时,我仍然可以看到提交。当我执行“git log”时,提交不存在。还有其他想法吗? (2认同)