git gc 失败指的是未在任何地方引用的对象哈希

git gc failure refers to object hash that's not referenced anywhere

最近,我注意到当我git pull我的回购时,它每次都在做一个git gc。所以我尝试手动 运行 git gc,这给了我这个错误:

fatal: bad object 76cab35e0e21b7cf0bc8416661a67fbfb7f0e4ba
error: failed to run repack

然后我尝试搜索 .git/packed-refs.git/objects/ 以及 .git/index 来寻找这个散列(甚至尝试只搜索我整个 .git/ 目录的文件名和内容这个散列),但它 从未出现 。它也没有出现在 git fsck --full 中(我猜它可能指的是 .git/ 中的一些文件,所以这是有道理的)。

我该如何解决这个问题? (我正在使用 git 2.3.2。)

发生这种情况是因为 reflog 引用了以某种方式从文件系统中消失的条目。 运行 git gc--prune="0 days" 将删除所有未在远程源中跟踪的比现在更早的引用,并且应该可以解决该问题。