我有一个 Git 存储库,其中包含大量不属于特定分支的提交,我可以提交git show,但是当我尝试列出包含它们的分支时,它什么也没有报告。
git show
我认为这是悬空提交/树问题(由于 -D 分支),所以我修剪了 repo,但之后我仍然看到相同的行为:
$ git fetch origin $ git fsck --unreachable $ git fsck
没有输出,没有任何悬空(对吗?)。但是提交存在
$ git show 793db7f272ba4bbdd1e32f14410a52a412667042 commit 793db7f272ba4bbdd1e32f14410a52a412667042 Author: ...
并且无法通过任何分支访问,因为
$ git branch --contains 793db7f272ba4bbdd1e32f14410a52a412667042
没有输出。
该提交的具体状态是什么?如何列出处于相似状态的所有提交?我怎样才能删除这样的提交?
没有输出,没有任何悬空(对吗?)
请注意,从您的 reflog 中引用的提交被认为是可访问的。
该提交的具体状态是什么?如何列出具有相似状态的所有提交
通过--no-reflogs说服git fsck将它们展示给您。
--no-reflogs
git fsck
我怎样才能删除这样的提交?
一旦您的 reflog 条目过期,这些对象也将由git gc.
git gc
到期由gc.pruneexpire、gc.reflogexpire和gc.reflogexpireunreachable设置控制。参照。git help config.
gc.pruneexpire
gc.reflogexpire
gc.reflogexpireunreachable
git help config
默认值都非常合理。