предупреждение: удаленная головка ссылается на несуществующий ref, неспособный к проверке
это похоже на популярную ошибку по разным причинам.
у меня есть простой голый git РЕПО под названием "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 файл config:
[branch "master"]
remote = origin
merge = refs/heads/master
вероятно, интересно знать, что этот репозиторий git раньше был репозиторием svn в далеком прошлом.
Ps: при просмотре голого репозитория с помощью gitweb, там явно есть master ветка там:http://kipdola.be/gitweb/?p=kiflea.git;a=резюме
8 ответов:
The
warning: remote HEAD refers to nonexistent ref, unable to checkout.означает, что удаленный (голый) репозиторий содержит ссылку на ветку в файлеHEADэто не соответствует ни одной опубликованной ветви в том же репозитории.обратите внимание, что предупреждение означает только то, что git не выполнил проверку. клонированный репозиторий, в противном случае просто отлично. Просто сделай
git branch -aчтобы увидеть возможные ветви иgit checkout the-branch-you-wantчтобы обойти эту проблему.обычно это происходит потому, что содержание по умолчанию для этого файла (
.git/HEADили простоHEADдля голых репозиториев) isref: refs/heads/masterон говорит, что если кто-то собираетсяcloneэтот репозиторий, они должны по умолчанию клонировать веткуrefs/heads/master. По умолчанию Git создаст локальную ветку безrefs/heads/префиксом (то естьmasterпо умолчанию). Попробуйgit help symbolic-refдля получения дополнительной информации.проблема этой ситуации заключается в том, что Git не предоставляет метод для изменения remote символические ссылки, так что либо вы используете что-то git хостинг-провайдер реализовано (например, настройки - по умолчанию филиал в GitHub, если у вас есть права администратора) или вы должны использовать название
masterкак ветвь по умолчанию (потому что это значение по умолчанию для этого символическая ссылка).если у вас есть доступ оболочки к удаленному репозиторию git, вы можете просто
cd path/to/bare/git/repo; git symbolic-ref HEAD refs/heads/XYZздесьXYZ- это имя ветви, которое вы хотите использовать по умолчанию.один из способов решить эту проблему-создать новое удаленное голое репо без коммитов, а затем сделать
git push name-of-the-remote my-special-branch-nameчто приведет в голом репозитории, содержащем одну веткуmy-special-branch-nameноHEADсимвольная ссылка по-прежнему содержит значение по умолчанию, указывающее наmaster. В результате вы получите вышеупомянутое предупреждение.
у меня была та же проблема, потому что я не был с помощью
masterветка, и она потерялась как в моем локальном, так и в удаленном репозитории.удаленный репозиторий все еще имел
HEADзначениеmaster, Я изменил его на одну из удаленных ветвей, которые я фактически использую, и все работает нормально.если вы можете получить доступ к удаленному репозиторию:
- иди к своему
remote_repo.git;- Edit
HEADfile- изменить
ref: refs/heads/mastertoref: refs/heads/your_branch
Да это связано с тем, что ваш клон git пытается проверить ветку, отличную от master. Просто сделай это
git clone user@git-server:project_name.git -b branch_name /some/folderЭто поможет вам клонировать точную ветвь через ее имя ветви.
несмотря на то, что эта ошибка была отображена - мой проект все еще был подключен к соответствующему репозиторию - я запустил команду "git branch" и увидел соответствующие ветви - затем я запустил "git checkout *branchname" и BOOM - все было хорошо.
там определенно что-то не так с вашим удаленным репозиторием. Возможно, вы сможете исправить это, создав новый клон репозитория. Также может сработать нажатие новой фиксации в главной ветви.
Я бы предположил, что это ведущий
*в журнале фиксации, который каким-то образом обманывает удаленный сервер.Я могу просматривать веб-интерфейс РЕПО, используя некоторые ссылки меню, но другие не работают с
404 - Unknown commit objectили аналогичный, особенно со страницы резюме.смотрите, если вы можете изменить это последнее сообщение фиксации, а затем принудительно нажмите Обновление, чтобы увидеть, если это исправляет его. Там может быть ошибка в Демоне сервера. Если он это исправит, то стоит сообщить об этом git list [email protected] (только текстовые сообщения)
Если на самом деле нет главной ветви, проверьте следующее; Если есть файл с именем 'packed-refs' внутри '.git ' папка, откройте ее, и вы можете найти все ссылки в списке.
что-то вроде ниже;
# pack-refs with: peeled fully-peeled e7cc58650190bd28599d81917f1706445d3c6d8b refs/tags/afw-test-harness-1.5 ^cfae4f034e82591afdf4e5ed72279297d0eee618 6afe1bcfa4bd74de8e0c8f64d024e1cc289206df refs/tags/afw-test-harness-2.1 ^c32f7fa495d4b44652f46c065fcd19c3acd237a6 72f2e4284dfbf27c82967da096c6664646bbdd19 refs/tags/android-1.6_r1 ^50992e805e758e2231f28ec2127b57a1a9fd0ddc 0cbd528cad1cee9556098b62add993fc3b5dcc33 refs/tags/android-1.6_r1.1затем использовать;
git checkout refs/tags/xxxxили
git checkout 'HASH value'для оформления заказа требуемой версии. Спасибо.
у меня была такая же проблема при создании голого РЕПО.
Я решил это просто клонирование РЕПО, создав локальную главную ветвь, а затем нажав master на удаленное РЕПО.
1) клонировать РЕПО
$ git.exe clone --progress -v "the remote path" "my local path"2) Создайте главную ветвь локально.
$ git checkout -b master3) совершить что-то в местном отделении
$ git add readme.md $ git commit –m “Added readme”4) Нажмите local master на пульте дистанционного управления
$ git push origin master
Comments