Я случайно нажал это сегодня, пытаясь запустить сборщик мусора Git :
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Как мне с этим справиться?
git
git-remote
git-fetch
git-gc
Райан
источник
источник
master
другой, называемойdevelop
. За несколько дней до того, как я вернул его обратно сdevelop
на,master
и я удалил старую ветку по умолчаниюdevelop
, но в моем рабочем каталоге файл.git/refs/remotes/origin/HEAD
все еще указывал на то,refs/remotes/origin/develop
чего больше не существует. В этой ситуации удаление файла сработало.git prune
сработал для меня, способ удалить данные, которые накопились в Git, но на которые не ссылается ничего полезного.$ mv .git/refs/remotes/origin/HEAD /tmp
$ git gc
git prune
git gc
сработало для меняПроблема, с которой я столкнулся (та же проблема, что и @Stavarengo, упомянутая в этом комментарии выше), заключается в том, что удаленная ветка по умолчанию (
develop
в моем случае) была удалена, но все еще упоминалась в.git/refs/remotes/origin/HEAD
.Открытие
.git/refs/remotes/origin/HEAD
в моем редакторе показало это:Я тщательно отредактировал его, чтобы указать на мою новую ветку по умолчанию, и все было хорошо:
Подсказка, которая меня предупредила, заключалась в том, что при запуске была
git prune
обнаружена такая ошибка:источник
Увидев ответ Трентона, я посмотрел на свой
.git/refs/remotes/origin/HEAD
и увидел, что он также указывает на старую ветку, которая теперь удалена.Но вместо того, чтобы самому редактировать файл, я попробовал решение Райана:
Он автоматически установил файл в новую ветку и
git gc
после этого работал нормально.источник
git remote set-head $REMOTE --auto
в моем случае $ REMOTE - это удаленный псевдоним, а не "origin" по умолчанию, потому что у меня установлено несколько пультов.Я думал, что решение было следующим, поскольку это, казалось, сработало, но оказалось, что на самом деле проблема не решена.
источник
git prune
(как рекомендовалось в первом выводе команды), поэтому я не могу точно сказать, что мне помогло - первое, второе или оба.git remote set-head origin --auto
исправил мой файл refs / remotes / origin / HEAD без необходимости использовать меняgit prune
error: Multiple remote HEAD branches. Please choose one explicitly
и мне пришлось использоватьgit remote set-head origin mybranch
(в то время как ветка mybranch была проверена), чтобы ошибка исчезла.Похоже, что ваши символические ссылки могут быть сломаны ... Попробуйте заменить его веткой по умолчанию следующим образом: Например, моя ветка по умолчанию - master
Это должно исправить это.
источник
Если вы используете git worktrees, убедитесь, что вы выполняете
перед запуском
У меня было повреждено рабочее дерево, и, похоже, это помогло после удаления поврежденного рабочего дерева.
git prune
сам по себе, похоже, не работал.источник
Причиной этого для меня была работа со сжатой папкой в Windows. Когда папка была распакована, это повредило файлы пакета, вызвав каскад других странных проблем, таких как невозможность удалить несуществующие ветки.
Единственным исправлением было стереть рабочий каталог и снова клонировать удаленные репо. К счастью, я все еще мог нажимать и получать обновления, чтобы ничего не потерялось. Теперь все хорошо.
источник