n1ro°
RU

Компьютеры · Инструкция

Как восстановить потерянный commit через git reflog

Reflog хранит локальную историю перемещений ссылок и часто позволяет найти коммит, который больше не виден из обычных ве

Редакция N1RO · Проверено

Короткий ответ

Если commit исчез после reset/rebase/переключения ветки, найдите его SHA в `git reflog`, проверьте через `git show <sha>` и сразу создайте ветку `git branch recovery <sha>`. Это безопаснее, чем сразу двигать текущую ветку.

Что делать

  1. Откройте reflog: Выполните `git reflog --date=local` и найдите состояние до ошибочного reset/rebase.
  2. Проверьте объект: Запустите `git show --stat <sha>` и убедитесь, что это нужный коммит.
  3. Закрепите его: Создайте `git branch recovery <sha>` или тег, чтобы объект снова стал достижимым.
  4. Сравните изменения: Используйте `git diff <текущая-ветка>.recovery`.
  5. Верните изменения: Merge/cherry-pick recovery-ветку либо переключите ветку на неё только после проверки.

Важно

Не запускайте агрессивный `git gc --prune` до восстановления.

Что учитывать

Не запускайте агрессивный `git gc --prune` до восстановления.

Источники и проверка

Инструкция составлена редакцией N1RO на 2026-09-17. Перед действием сверьте актуальные условия на официальном сайте сервиса или производителя.