我今天在试图运行Git 垃圾收集时随机碰到了这个:
$ git gc fatal: bad object refs/remotes/origin/HEAD error: failed to run repack
我该怎么处理呢?
我不理解这个的后果,但正如在这篇文章中所建议的,当我遇到这个问题时,我就这样做了
$ mv .git/refs/remotes/origin/HEAD /tmp
(留着以防万一)然后
$ git gc
毫无怨言地工作;我还没有遇到任何问题。
我遇到的问题(这与@Stavarengo在上面的这样的评论中提到的问题相同)是默认的远程分支(在我的例子中是develop)已被删除,但仍在.git/refs/remotes/origin/HEAD中引用。
develop
.git/refs/remotes/origin/HEAD
在我的编辑器中打开.git/refs/remotes/origin/HEAD显示:
ref: refs/remotes/origin/develop
我小心翼翼地编辑它指向我的新默认分支,一切都很好:
ref: refs/remotes/origin/master
提示我的线索是运行git prune显示以下错误:
git prune
> git prune warning: symbolic ref is dangling: refs/remotes/origin/HEAD
在看到Trenton的答案后,我看了我的.git/refs/remotes/origin/HEAD,看到它也指向一个现在被删除的旧分支。
但我没有自己编辑文件,而是尝试了Ryan的解决方案:
git remote set-head origin --auto
它自动将文件设置为新的分支,之后git gc工作正常。
git gc
如果您正在使用git工作树,请确保您正在执行
git worktree prune
在运行之前
我有一个工作树得到损坏,这似乎做的把戏后,删除损坏的工作树。git prune本身似乎不能工作。
看起来你的symbol -refs可能坏了… 试着用你的默认分支替换它,就像这样: 例如,我的默认分支是主
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master $ git fetch --prune $ git gc
这应该能解决问题。
对我来说,这个问题的原因是在Windows的压缩文件夹中工作。当文件夹未压缩时,它破坏了包文件,引发了其他奇怪的问题,例如无法修剪不存在的分支。
唯一的修复方法是清除工作目录并再次克隆回购远程。幸运的是,我仍然可以推拉更新,以确保没有任何损失。现在一切都好了。
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'
git checkout main //我删除了文件。git\refs\heads\branch_xpto < br > git拉 Git签出branch_xpto
fatal: bad object refs/remotes/origin/HEAD error: failed to run repack
如果上游分支已经被移除,而您的原点指向它,则可能会发生这种情况。你可以通过运行:
cat .git/refs/remotes/origin/HEAD
如果它指向一个不存在的分支,运行:
紧随其后的是
会解决的
master
main
返回:
为了解决这个问题,我运行:
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
我又运行了一遍以确认:
ref: refs/remotes/origin/main
然后git gc和git prune工作得很好。
为了看看会发生什么,我也尝试了:
origin/HEAD set to main
它通过自动识别引用来解决这个问题。
.gitignore
desktop.ini
我首先在windows上使用批处理命令删除这些文件,如下所示:
create a "delete.bat"文件,并向其中添加以下代码
del /s /q /f /a ".\desktop.ini"
cmd
通过在cmd中调用delete.bat来运行它
delete.bat
后面跟着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/refs/remotes/origin/account
一切都很完美。
参rm . / /遥控器/产地/头