Ответы:
Я не понимаю последствий этого, но, как было предложено в этой теме , когда я столкнулся с этим, я просто сделал
$ mv .git/refs/remotes/origin/HEAD /tmp
(оставив его на всякий случай), а затем
$ git gc
работал без жалоб; У меня проблем не было.
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в моем редакторе показало это:
ref: refs/remotes/origin/develop
Я тщательно отредактировал его, чтобы указать на мою новую ветку по умолчанию, и все было хорошо:
ref: refs/remotes/origin/master
Подсказка, которая меня предупредила, заключалась в том, что при запуске была git pruneобнаружена такая ошибка:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Увидев ответ Трентона, я посмотрел на свой .git/refs/remotes/origin/HEADи увидел, что он также указывает на старую ветку, которая теперь удалена.
Но вместо того, чтобы самому редактировать файл, я попробовал решение Райана:
git remote set-head origin --auto
Он автоматически установил файл в новую ветку и git gcпосле этого работал нормально.
git remote set-head $REMOTE --autoв моем случае $ REMOTE - это удаленный псевдоним, а не "origin" по умолчанию, потому что у меня установлено несколько пультов.
Я думал, что решение было следующим, поскольку это, казалось, сработало, но оказалось, что на самом деле проблема не решена.
git remote set-head origin --auto
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 symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Это должно исправить это.
Причиной этого для меня была работа со сжатой папкой в Windows. Когда папка была распакована, это повредило файлы пакета, вызвав каскад других странных проблем, таких как невозможность удалить несуществующие ветки.
Единственным исправлением было стереть рабочий каталог и снова клонировать удаленные репо. К счастью, я все еще мог нажимать и получать обновления, чтобы ничего не потерялось. Теперь все хорошо.
masterдругой, называемойdevelop. За несколько дней до того, как я вернул его обратно сdevelopна,masterи я удалил старую ветку по умолчаниюdevelop, но в моем рабочем каталоге файл.git/refs/remotes/origin/HEADвсе еще указывал на то,refs/remotes/origin/developчего больше не существует. В этой ситуации удаление файла сработало.