Ответ
Для отката ветки на два коммита назад используется команда git reset. Выбор режима зависит от того, нужно ли сохранить изменения.
Основные режимы:
-
git reset --soft HEAD~2- Что делает: Откатывает указатель ветки на два коммита назад, но сохраняет все изменения из этих коммитов в индексе (staging area).
- Когда использовать: Когда нужно переделать последние два коммита, сохранив их изменения для нового коммита.
-
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, который создает новые коммиты, отменяющие старые.