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

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

我该怎么处理呢?


当前回答

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

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

这应该能解决问题。

其他回答

我碰到了这个错误,因为默认分支从master更改为main。 我使用了上面几个答案给出的混合信息来解决它:

cat .git/refs/remotes/origin/HEAD

返回:

ref: refs/remotes/origin/master

为了解决这个问题,我运行:

git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

我又运行了一遍以确认:

cat .git/refs/remotes/origin/HEAD

返回:

ref: refs/remotes/origin/main

然后git gc和git prune工作得很好。


为了看看会发生什么,我也尝试了:

git remote set-head origin --auto

返回:

origin/HEAD set to main

它通过自动识别引用来解决这个问题。

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

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

git update-ref -d [wrong reference here]

这将解决这个问题。

以上问题使用以下代码:

git update-ref -d 'refs/remotes/origin/HEAD'

以防你在使用.git时出现如下错误:

error: bad ref for .git/logs/refs/remotes/origin/Dec/session-dynatrace-logs 6

你可以从下面的引用开始复制路径:

git update-ref -d 'refs/remotes/origin/Dec/session-dynatrace-logs 6'

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

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

(留着以防万一)然后

$ git gc

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

参rm . / /遥控器/产地/头

git gc