Как откатить ветку в Git на два коммита назад?

«Как откатить ветку в Git на два коммита назад?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для отката ветки на два коммита назад используется команда git reset. Выбор режима зависит от того, нужно ли сохранить изменения.

Основные режимы:

  1. git reset --soft HEAD~2

    • Что делает: Откатывает указатель ветки на два коммита назад, но сохраняет все изменения из этих коммитов в индексе (staging area).
    • Когда использовать: Когда нужно переделать последние два коммита, сохранив их изменения для нового коммита.
  2. git reset --hard HEAD~2

    • Что делает: Откатывает указатель ветки и полностью удаляет все изменения из этих двух коммитов из рабочей директории и индекса.
    • Когда использовать: Когда изменения последних двух коммитов больше не нужны. Используйте с осторожностью, так как изменения будут утеряны.

Практический пример:

# 1. Создайте резервную ветку для безопасности
$ git branch backup_branch

# 2. Выполните откат (например, мягкий)
$ git reset --soft HEAD~2

# 3. Проверьте состояние: изменения будут в индексе
$ git status

# 4. Если ветка уже была отправлена в удаленный репозиторий,
#    потребуется принудительный пуш (согласуйте с командой!)
$ git push origin <имя_ветки> --force

Важно: Команда git reset изменяет историю. Если вы уже отправили коммиты в общий репозиторий, принудительный пуш (--force) может нарушить работу коллег. В таких случаях часто безопаснее использовать git revert, который создает новые коммиты, отменяющие старые.