Как решить проблему с "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 шт):

Автор решения: user7860670

Текущее состояние (указатель HEAD указывает на коммит, ака detached head) видимо возникло, потому что перед новыми коммитами был сделан checkout по id коммита. Соответственно после новых коммитов указатель master не передвигался.

git branch -f master && git checkout master переставит указатель master на текущий коммит и затем переставит указатель HEAD на указатель master.

→ Ссылка