← Все вопросы

Как вернуться к старому коммиту в git, чтобы посмотреть код?

Задан 8 месяцев назад944 просмотров2 ответа
9

Хочу откатиться на старый коммит и посмотреть, как код выглядел раньше. Потом, может, вернусь обратно. Как это сделать и что за страшное сообщение про «detached HEAD» появляется?

2 ответа

10
✓ Принятый ответ — помог автору

Есть два сценария: посмотреть старый код и откатить ветку на старый коммит. Это разные вещи.

Просто посмотреть (не меняя историю). Найди хеш коммита через git log --oneline, затем:

git checkout a1b2c3d

Теперь рабочая папка выглядит как в том коммите. Git предупредит про «detached HEAD» — это значит, что ты не на ветке, а «висишь» на конкретном коммите. Это нормально для просмотра. Чтобы вернуться обратно на свою ветку:

git switch -

или git checkout main.

Откатить ветку насовсем к старому коммиту (если коммиты после него не нужны):

git reset --hard a1b2c3d

Осторожно: это сотрёт все коммиты после a1b2c3d.

Безопасный вариант для общей ветки — сделать обратный коммит:

git revert a1b2c3d

Частая ошибка: запаниковать от «detached HEAD» и начать там коммитить, а потом «потерять» эти коммиты при переключении. Если что-то наработал в detached-состоянии — сразу создай ветку: git switch -c new-branch, иначе коммиты могут потеряться.

4

Расшифровка «detached HEAD»: обычно HEAD указывает на ветку, а ветка — на коммит. Когда ты делаешь checkout по хешу, HEAD указывает прямо на коммит, минуя ветку — отсюда «отсоединённая голова».

Это не ошибка, а режим «только посмотреть». Главное — не коммитить там без создания ветки. Вернуться к работе: git switch - (на предыдущую ветку).

Ваш ответ

Войдите, чтобы ответить на вопрос.