我今天在尝试运行Git垃圾收集时偶然发现了这个:
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
我该怎么处理呢?
我今天在尝试运行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
这应该能解决问题。
其他回答
我遇到了同样的问题,当我试图从起源分支拉,我得到了以下错误:
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中删除
一切都很完美。
参rm . / /遥控器/产地/头
git gc
在看到Trenton的答案后,我查看了我的.git/refs/remotes/origin/HEAD,发现它也指向一个旧的分支,现在已经删除了。
但我没有自己编辑文件,而是尝试了Ryan的解决方案:
git remote set-head origin --auto
它会自动将文件设置为新的分支,git gc在那之后工作得很好。
我遇到的问题(这与@Stavarengo在上面的评论中提到的问题相同)是默认的远程分支(在我的情况下是开发)已经被删除,但仍然在.git/refs/remotes/origin/HEAD中引用。
在编辑器中打开。git/refs/remotes/origin/HEAD,如下所示:
ref: refs/remotes/origin/develop
我仔细地编辑它以指向我的新默认分支,一切都很好:
ref: refs/remotes/origin/master
提示我的线索是运行git prune会出现以下错误:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
上面的解决方案部分适用于我,因为我的文件夹在存储库中到处都有“desktop.ini”文件,因为它托管在谷歌驱动器上,包括“desktop.ini”文件。git存储自己数据的文件夹。Git希望该文件夹中的每个文件都包含Git数据,而不是谷歌Drive数据,因此在试图解释desktop.ini文件内容时阻塞了。 为了避免这种情况,请确保在.gitignore中包含desktop.ini
我首先在windows上使用批处理命令删除这些文件,如下所示:
在存储库中创建一个“delete.bat”文件,并将以下代码添加到其中 Del /s /q /f /a ".\desktop.ini" 打开cmd,打开当前文件夹 运行delete.bat只需在CMD中调用它
现在你应该可以跑了 Git远程set-head origin——auto
后面跟着git gc