Откат последнего коммита (soft/mixed/hard)
Три способа откатить последний коммит в Git: soft (сохраняет изменения в staging), mixed (сохраняет в рабочей директории), hard (полное удаление).
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Три варианта отката последнего коммита в зависимости от того, что нужно сохранить: изменения в staging area, в рабочей директории или полностью удалить.
# 1. Soft reset — откатывает коммит, но оставляет изменения в staging area
git reset --soft HEAD~1
# 2. Mixed reset (по умолчанию) — откатывает коммит, изменения в рабочей директории
git reset HEAD~1
# или явно:
git reset --mixed HEAD~1
# 3. Hard reset — полностью удаляет коммит и все изменения (ОПАСНО!)
git reset --hard HEAD~1
Когда использовать:
- —soft: Нужно переделать коммит (изменить сообщение, добавить файлы)
- —mixed: Нужно откатить коммит, но сохранить изменения для редактирования
- —hard: Нужно полностью удалить коммит и изменения (только если уверены!)
Если коммит уже запушен (в удалённый репозиторий):
# Используйте revert вместо reset (создаёт новый коммит, отменяющий изменения)
git revert HEAD
# Или для конкретного коммита
git revert <commit-hash>
# После revert запушьте изменения
git push origin <branch-name>
Usage:
Используйте --soft для переделки коммита, --mixed для сохранения изменений, --hard только если уверены. Если коммит запушен — используйте revert.
Notes:
⚠️ --hard безвозвратно удаляет изменения. Если коммит уже запушен, используйте git revert вместо reset — это создаст новый коммит, отменяющий изменения, и не перепишет историю.