При работе с Git может возникнуть такая ситуация: команда git push не заливает изменения на сервер, а команда git status показывает:
$ git status
HEAD detached from 87dc87b
Это может означать, что вы делали какую-то навигацию по истории коммитов, и неправильно вернулись к последнему коммиту.
Для того, чтобы понимать, что произошло, настоятельно рекомендуется прочитать следующую небольшую статью:
Git: что делать в состоянии detached head
Исправить эту проблему можно 4-мя командами:
git branch temp
git checkout temp
git branch -f master temp
git checkout master
И, опционально,
git branch -d temp
Что при этом происходит:
1. создаем временную ветку с именем temp, причем в новой ветке будет правильно установлено положение HEAD
2. переключаемся на временную ветку temp
3. в ветке master устанавливается та же позиция HEAD, что и в ветке temp
4. переключиться на ветку master
И опционально:
5. удалить временную ветку
Еще один вариант, короткий
git checkout имяВеткиГдеВыНаходитесь
- эта команда переключит проект в последний коммит текущей ветки. Точнее, в состоянии detached head, проект не находится ни в какой ветке. git checkout branchname просто переключит проект на последний коммит той ветки, которая указана. Это значит, что до появления ошибки нужно знать, в какой ветке ты находишься. Для того чтобы посмотреть, где находился, можно воспользоваться командой:
git reflog
Самый правильный вариант
git checkout HEAD@{1}