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

Предупреждение: удаленный HEAD относится к несуществующим ref, неспособным проверить

Это кажется популярной ошибкой по разным причинам.

У меня есть простая голова git repo под названием "kiflea.git", я клонирую ее так:

git clone git://kipdola.be/kiflea.git

Тогда git говорит мне: warning: remote HEAD refers to nonexistent ref, unable to checkout.

И да, на карте нет версий файлов, кроме каталога .git. Во всяком случае, единственное, что мне нужно сделать, это:

cd kiflea
git checkout master

И он работает, все файлы есть. Но я думал, что клонирование репо автоматически проверяет мастера, так что происходит точно, и как его исправить?

Я заметил, что после бит git checkout master это добавляется в мой локальный файл конфигурации .git:

[branch "master"]
    remote = origin
    merge = refs/heads/master

Вероятно, интересно узнать, что этот репозиторий git использовался как репозиторий svn в далеком прошлом.

Ps: при просмотре голого репозитория с помощью gitweb явно есть ветвь master: http://kipdola.be/gitweb/?p=kiflea.git;a=summary

4b9b3361

Ответ 1

warning: remote HEAD refers to nonexistent ref, unable to checkout. означает, что удаленный (голый) репозиторий содержит ссылку на ветку в файле HEAD, которая не соответствует какой-либо опубликованной ветке в том же репозитории.

Обратите внимание, что предупреждение означает только, что git не выполнял проверку. Клонированный репозиторий в остальном просто отлично. Просто сделайте git branch -a, чтобы увидеть возможные ветки и git checkout the-branch-you-want, чтобы обойти проблему.

Это обычно происходит потому, что содержимое по умолчанию для этого файла (.git/HEAD или plain HEAD для голых репозиториев) ref: refs/heads/master, в котором говорится, что если кто-то собирается в clone этот репозиторий, он должен по умолчанию клонировать ветвь refs/heads/master. По умолчанию git создаст локальную ветвь без префикса refs/heads/ (то есть master по умолчанию). Попробуйте git help symbolic-ref для получения дополнительной информации.

Проблема с этой ситуацией заключается в том, что git не предоставляет метод для модификации удаленных символических ссылок, поэтому либо вы используете то, что реализовал хостинг-провайдер git (например, "Настройки - ветвь по умолчанию в GitHub, если у вас есть права администратора" ) или вам нужно использовать имя ветки master как ветку по умолчанию (потому что это значение по умолчанию для этой символической ссылки).

Один из способов решить эту проблему - создать новое удаленное обнародованное репо без коммитов, а затем сделать git push name-of-the-remote my-special-branch-name, что приведет к созданию открытого репозитория, содержащего единственную ветвь my-special-branch-name, но символ HEAD symbolic ref по-прежнему содержит значение по умолчанию значение, указывающее на master. В результате вы получите вышеупомянутое предупреждение.

Ответ 2

У меня была такая же проблема, потому что я больше не использовал ветку master, и она потерялась как в моем локальном, так и удаленном репозитории.

У удаленного репозитория все еще был установлен HEAD на master, я изменил его на одну из удаленных ветвей, которые я использую, и все работает нормально.

Если вы можете получить доступ к удаленному репозиторию:

  • Перейдите к remote_repo.git;
  • Изменить HEAD файл
  • Измените ref: refs/heads/master на ref: refs/heads/your_branch

Ответ 3

Да, это связано с вашим клоном git, который пытается проверить ветвь, отличную от мастера. Просто сделайте это

git clone [email protected]:project_name.git -b branch_name /some/folder

Это поможет вам клонировать точную ветку с помощью ее имени ветки.

Ответ 4

Несмотря на то, что эта ошибка была отображена - мой проект все еще был подключен к соответствующему репозиторию - я запустил команду "git branch" и увидел соответствующие ветки - я тогда побежал 'git checkout * branchname' и BOOM - все было хорошо.

Ответ 5

В вашем удаленном репозитории определенно что-то не так. Возможно, вы сможете исправить это, создав новый клон репозитория. Также может работать и нажатие новой фиксации на ведущую ветку.

Ответ 6

Я бы предположил, что это ведущий * в журнале фиксации, который каким-то образом обманывает удаленный сервер.

Я могу просматривать веб-интерфейс репо с помощью некоторых ссылок на меню, но другие терпят неудачу с помощью 404 - Unknown commit object или подобных, особенно с итоговой страницы.

Посмотрите, можете ли вы изменить это последнее сообщение фиксации, а затем принудительно нажать на обновление, чтобы узнать, исправляет ли он это. На сервере может появиться ошибка. Если он исправит это, стоит сообщить в список git git @vger.kernel.org(только текстовые сообщения)