Как решить проблему с "HEAD detached from origin/master"
Как получилось такое состояние — не знаю. Вобщем, поработал, сделал пару коммитов локально, все OK. Решил отправить на сервер,
> git push origin
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push origin HEAD:<name-of-remote-branch>
Что за <name-of-remote-branch> — один git ведает...
Смотрю состояние:
> git status
HEAD detached from origin/master
Untracked files:
(use "git add <file>..." to include in what will be committed)
VCRelease64/
nothing added to commit but untracked files present (use "git add" to track)
Ну, Untracked files меня совсем не интересуют.
Поискал в интернете — совет "сделай git checkout origin/master". Хорошо, что сохранил все полностью на всякий случай — выбросило два последних коммита в... вобщем, их не осталось. Восстановил.
В gitk выглядит так, как на картинке.
Вопрос: что нужно сделать, чтоб вернуть в нормальное состояние и ничего не потерять? Как вариант, я уже думал — попробовать все с сервера опять стянуть, как новый проект, переписать в него изменения и работать, но как-то неспортивно :)
Пояснять, как работает git, не уверен, что нужно — все равно не понимаю совершенно, сколько ни читал, если б начальство не требовало, я б им и не заморачивался. Так что просто — как вырулить в этой ситуации и двумя словами, почему именно так (вдруг пойму). Как я понимаю, мне не HEAD куда-то приаттачить надо, а origin/master к нему подтянуть, нет?
P.S. Всегда хватало git commit и git push :)
Ответы (1 шт):
Текущее состояние (указатель HEAD указывает на коммит, ака detached head) видимо возникло, потому что перед новыми коммитами был сделан checkout по id коммита. Соответственно после новых коммитов указатель master не передвигался.
git branch -f master && git checkout master
переставит указатель master на текущий коммит и затем переставит указатель HEAD на указатель master.
