修复 git 存储库中的悬空提交和标签

Tim*_*nze 7 git repository commit

我有一个裸露的 git 存储库,根据git fsck --full,它有大约 300 个悬空提交和标签。其中大约 90% 是悬挂标签。

我不确定这些问题从何而来,但由于存储库似乎工作正常,它们可能已经存在了一段时间了。

我想修复它们,但到目前为止,我尝试过的任何方法都无法解决问题。到目前为止我已经尝试过这些命令:

git reflog expire --expire=now --all
git gc --prune=now --aggressive
git repack -a -d
Run Code Online (Sandbox Code Playgroud)

如何修复这些悬空的提交和标签?它们有问题吗?重要的是我不要丢失历史记录和标签,而且我有点担心许多悬空的标签。

此致

ani*_*ion 3

悬空提交和标签是不可“访问”的提交和标签,这意味着它们不是历史记录HEAD或任何分支的一部分。当且仅当您当前没有错过任何提交,那么您可以删除它们。要删除悬空提交,DrZoo 已经发布了一个很好的链接。使用 git 删除标签有时可能有点棘手。但您也可以手动删除标签。如果 git 说你有一个

dangling tag b61fdaf08acb1412b629b1913da21143775e523a
Run Code Online (Sandbox Code Playgroud)

例如,您可以通过删除文件来删除它

repositoryfolder\.git\objects\b6\1fdaf08acb1412b629b1913da21143775e523a
Run Code Online (Sandbox Code Playgroud)