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

Фатальный: неправильная версия по умолчанию 'HEAD'

Я использую GIT как свою систему управления версиями. Мы установили его на одном из наших ящиков Linux. Черепаха GIT - мой клиент Windows.

Сегодня утром я проверил некоторые изменения и пометил код. Затем я нажал мой локальный репозиторий на удаленный репозиторий.

Когда я перехожу в свой репозиторий в поле unix и набираю git log, я получаю:

fatal: bad default revision 'HEAD'

Но когда я делаю show log с помощью моего окна tortoiseGit клиент, история выглядит красиво, как показано ниже...

---
SHA-1: f879573ba3d8e62089b8c673257c928779f71692

Initial drop of code

---
master origin/master oms-phase4-v1.0.0
SHA-1: 56176dbe45e6175b18c9f44533828806c63142ab

OMS Phase 4 - Added OMS Cust. Order No. to EDI Purchase Order Header screens

Tag Info

object 56176dbe45e6175b18c9f44533828806c63142ab
type commit
tag oms-phase4-v1.0.0
tagger Richard Riviere <[email protected]> 1364338495 +1100

---
SHA-1: 0000000000000000000000000000000000000000

Working dir changes
0 files changed

---

Код определенно был перенесен в удаленный репозиторий. Я смог проверить, клонируя репозиторий в другой каталог.

Кто-нибудь знает, почему я получаю fatal: bad default revision 'HEAD'?

p.s. Это голый репозиторий, однако я создал другие открытые репозитории, у которых не было этой проблемы.

4b9b3361

Ответ 1

Ваше репо принадлежит вам, то, что происходит в нем, - это ваше дело до тех пор, пока вы не нажмете или не разрешите a) извлечь или клонировать. Когда вы удалили репозиторий Windows, эта папка не представляла ваше местное репо, это было ваше фактическое местное репо, вы удалили все, что было сделано в нем, которое никогда не было нажато, выбрано или клонировано.

edit: А, ладно, я думаю, что я вижу, что происходит здесь: вы подтолкнули к вашему репозиторию linux, но он не голый, и вы никогда не работали в нем.

Вместо git log выполните git log --all. Или git checkout some-branch-name.

Затем попробуйте клонировать репозиторий локально, на вашем Linux-поле; Держу пари, что это работает. Что вы используете для обслуживания своего репо в Linux? Попробуйте cd'ing в его директорию .git и git daemon --base-path=. --export-all, если это просто сидит там, перейдите в окно Windows и попробуйте git clone git://your.linux.box.ip, если демона жалуется, что он не может связать add --port=54345 с вызовом daemon и :54345 к URL-адресу клона.

Ответ 2

Это происходит со мной, когда ветка, в которой я работаю, удаляется из репозитория, но рабочая область, в которой я работаю, не обновляется. (У нас есть инструмент, который позволяет создавать несколько рабочих областей git "из одного и того же репозитория с помощью симлинков.)

Если git branch не отмечает какую-либо ветвь как текущую, попробуйте сделать

git reset --hard <<some branch>>

Я пробовал несколько подходов, пока не отработал этот.

Ответ 3

Еще не зафиксировано?

Это сирота, если она не имеет фиксации.

Ответ 4

просто выполните начальную фиксацию, и ошибка исчезнет:

git commit -m "initial commit"

Ответ 5

Убедитесь, что существует ветвь "master"! Это не просто имя.

Я получил эту ошибку после создания пустой пустой репо, нажав на нее ветвь с именем "dev" и попытавшись использовать git log в состоянии открытого репо. Интересно, что ветвь git знает, что dev является единственной ветвью, существующей (так что я думаю, что это ошибка git).

Решение. Я повторил процедуру, на этот раз переименовав "dev" в "master" на рабочем репо, прежде чем перейти к голой репо. Успех!

Ответ 6

Примечание: Git 2.6 (Q3/Q4 2015), наконец, предоставит более значимое сообщение об ошибке.

Смотрите commit ce11360 (29 августа 2015 г.) Джефф Кинг (peff).
(слияние Юнио С Хамано - gitster - в совершить 699a0f3, 02 сентября 2015)

log: более четко определить пустой HEAD

Если вы инициализируете или клонируете пустой репозиторий, исходное сообщение из "git log" не очень дружелюбное:

$ git init
Initialized empty Git repository in /home/peff/foo/.git/
$ git log
fatal: bad default revision 'HEAD'

Откроем эту ситуацию и напишем более дружественное сообщение:

$ git log
fatal: your current branch 'master' does not have any commits yet

Мы также обнаруживаем случай, когда "HEAD" указывает на сломанное ref; это должно быть еще менее распространено, но его легко увидеть. Обратите внимание, что мы не диагностируем все возможные случаи. Мы полагаемся на resolve_ref, что означает, что мы не получаем информацию о сложных случаях. Например, "--default master" будет использовать dwim_ref для поиска "refs/heads/master", но мы замечаем только, что "master" не существует.
Аналогично, сложное выражение sha1, подобное "--default HEAD^2", не будет разрешено как ref.

Но это нормально. В этих случаях мы возвращаемся к общему сообщению об ошибке, и они вряд ли будут использоваться в любом случае.
Захват пустой или сломанной "HEAD" улучшает общий случай, а другие случаи не регрессируются.

Ответ 7

Это происходит, когда .git/HEAD ссылается на ветвь, которая не существует. Я столкнулся с этой ошибкой в ​​репо, у которого ничего не было в .git/refs/heads. Я понятия не имею, как репо попало в это состояние, я унаследовал от кого-то, кто покинул компанию.

Ответ 8

Я не думаю, что это проблема с OP, но если вы похожи на меня, вы столкнулись с этой ошибкой, когда пытались поиграть с git командами сантехники (update-index и cat-file) никогда не совершая ничего в первую очередь. Поэтому попробуйте что-то сделать (git commit -am 'First commit'), и ваша проблема должна быть решена.

Ответ 9

Я получил ту же ошибку и не смог ее решить.

Затем я заметил 3 дополнительных файла в одном из моих каталогов.

Файлы были названы:

config, HEAD, description

Я удалил файлы, и ошибка не появилась.

config содержит:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = true

HEAD содержит:

ref: refs/heads/master

description содержит:

Unnamed repository; edit this file 'description' to name the repository.