我今天在尝试运行Git垃圾收集时偶然发现了这个:

$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack

我该怎么处理呢?


当前回答

我不理解这种情况的后果,但正如本文所述,当我遇到这种情况时,我就这么做了

$ mv .git/refs/remotes/origin/HEAD /tmp

(留着以防万一)然后

$ git gc

毫无怨言地工作;我还没有遇到任何问题。

其他回答

如果您正在使用git工作树,请确保您正在执行

git worktree prune

在运行之前

git gc

我有一个工作树得到损坏,这似乎做的把戏后,删除损坏的工作树。Git修剪本身似乎不起作用。

我不理解这种情况的后果,但正如本文所述,当我遇到这种情况时,我就这么做了

$ mv .git/refs/remotes/origin/HEAD /tmp

(留着以防万一)然后

$ git gc

毫无怨言地工作;我还没有遇到任何问题。

我遇到了同样的问题,当我试图从起源分支拉,我得到了以下错误:

fatal: bad object refs/remotes/origin/account

出于某种原因,上述解决方案对我来说并不管用。总是得到这个错误

mv: cannot stat '.git/refs/remotes/origin/HEAD': No such file or directory

运行git gc会给出这样的错误:

error: bad ref for .git/logs/refs/remotes/origin/account
fatal: bad object refs/remotes/origin/account
fatal: failed to run repack

在我的情况下,远程分支指向一个不存在的分支。

为我修复它的是删除分支

git branch -D account

同时从。git/refs/remotes/origin/account中删除

一切都很完美。

我的问题发生在一个特定的分支。 显然分支的参考文件被破坏了。我把它修好了。

Git checkout main //我删除了文件。git\refs\heads\branch_xpto git拉 Git签出branch_xpto

看起来你的符号裁判可能坏了… 试着用你的默认分支替换它,就像这样: 例如,我的默认分支是master

$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc

这应该能解决问题。