Подтвердить что ты не робот

Libgit2 вернулся: Refspec 'refs/heads/origin/HEAD' не найдена ошибка в TortoiseGit

Я получил эту ошибку при запуске TortoiseGit:

Error dialog screenshot

Не удалось получить все ссылки.
libgit2: Refspec 'refs/heads/origin/HEAD' не найден

В то время как это раздражает, это не мешает мне использовать TortoiseGit. Однако я бы хотел, чтобы это ушло, потому что это, ну, раздражает. Как это исправить?

4b9b3361

Ответ 1

Обновленный ответ

Итак, получается, что для обновления локального представления репо, с которым указывает ветвь <remote>/HEAD, вы можете иметь git автоматически получать эту информацию с пульта и устанавливать его локально для вас, вместо того, чтобы вручную установить его с помощью git symbolic-ref, как в моем предыдущем решении выше:

git remote set-head <remote> --auto

# Or shorter
git remote set-head <remote> -a

Обратите внимание, что эта команда фактически не изменяет то, что ветвь по умолчанию находится на самом удаленном репо. Для этого вам, вероятно, понадобится использовать git symbolic-ref непосредственно в удаленном репо, если у вас есть к нему доступ.

Старый ответ

Проблема, на которую ссылается сообщение об ошибке, заключается в том, что, по-видимому, libgit2 пытается прочитать удаленную ветку по умолчанию, на которую указывает refs/remotes/origin/HEAD, но удаленная ветвь не существует, поэтому ошибка.

Используя git branch -a, мое местное репо думает, что origin/develop является удаленной ветвью по умолчанию:

remotes/origin/HEAD -> origin/develop

В какой-то момент origin/develop действительно была ветвью по умолчанию в моем реестре origin на GitHub, но это уже не ветка master. Филиал develop был удален из origin, поскольку он больше не нужен.

Поэтому я исправил это, вручную обновив локальную ссылку origin/HEAD, чтобы указать на новую ветку по умолчанию на origin:

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

Или если я хотел бы также добавить сообщение в reflog для refs/remotes/origin/HEAD:

git symbolic-ref -m "Update to new remote default branch" \
refs/remotes/origin/HEAD refs/remotes/origin/master

Это решило проблему. См. Также: