Выбор ответа Middle Git обновлено

Восстановление после reset --hard

Вопрос

Ты сделал git reset --hard HEAD~3 и понял, что три коммита были нужны. Как их вернуть?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Найти прежний HEAD в git reflog и сделать reset на него. Коммиты после reset не удаляются сразу: на них ссылаются записи reflog, пока их не вычистит сборка мусора (по умолчанию недостижимые записи живут 30 дней). reflog показывает, куда указывал HEAD, и туда можно вернуться. - Утверждение…

Варианты ответа

  1. Никак: reset --hard удаляет коммиты из репозитория навсегда
  2. git revert HEAD~3, он вернёт три отменённых коммита
  3. Найти прежний HEAD в git reflog и сделать reset на негоправильный ответ
  4. git stash pop, reset прячет коммиты в stash

Разбор

Коммиты после reset не удаляются сразу: на них ссылаются записи reflog, пока их не вычистит сборка мусора (по умолчанию недостижимые записи живут 30 дней). reflog показывает, куда указывал HEAD, и туда можно вернуться.

  • Утверждение «навсегда» неверно, пока коммиты есть в reflog.
  • revert создаст новый коммит и ничего не восстановит.
  • stash хранит незакоммиченные правки, а не отброшенные коммиты.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.