git reflog может прийти вам на помощь.
Введите его в свою консоль, и вы получите список вашей истории git вместе с SHA-1, представляющим их.
Просто проверьте любой SHA-1, к которому вы хотите вернуться
Прежде чем ответить, давайте добавим немного предыстории, объясняя, что это такое HEAD.
First of all what is HEAD?
HEADпросто ссылка на текущую фиксацию (самую последнюю) в текущей ветке.
В HEADлюбой момент времени может быть только один . (исключаяgit worktree )
Содержимое HEADхранится внутри .git/HEADи содержит 40 байт SHA-1 текущего коммита.
detached HEAD
Если вы не в последней фиксации - это означает, что HEADэто указывает на предыдущую фиксацию в истории, которую он вызывает detached HEAD.

В командной строке это будет выглядеть так: SHA-1 вместо имени ветки, поскольку HEADне указывает на конец текущей ветки.


Несколько вариантов восстановления после отключенной HEAD:
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
Это проверит новую ветку, указывающую на желаемый коммит.
Эта команда выполнит проверку для данной фиксации.
На этом этапе вы можете создать ветку и начать работу с этого момента.
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
Вы всегда можете использовать reflogтакже.
git reflogотобразит любое изменение, которое обновило HEADфайл, и проверка нужной записи в журнале reflog HEADвернет этот коммит обратно.
Каждый раз, когда ГОЛОВА изменяется, в reflog
git reflog
git checkout HEAD@{...}
Это вернет вас к желаемой фиксации

«Переместите» вашу ГОЛОВУ обратно к желаемой фиксации.
git reset --hard 0d1d7fc32
git stash
git reset --hard 0d1d7fc32
git stash pop
- Примечание. ( Начиная с Git 2.7 )
вы также можете использовать git rebase --no-autostash.
«Отменить» данную фиксацию или диапазон фиксации.
Команда сброса "отменит" любые изменения, сделанные в данной фиксации.
Новая фиксация с патчем отмены будет зафиксирована, а исходная фиксация также останется в истории.
git revert <sha-1>
Эта схема показывает, какая команда что делает.
Как видите, reset && checkoutизмените файл HEAD.
