GIT
#git#version-control#revert#commit#undo

Откат последнего коммита (soft/mixed/hard)

Три способа откатить последний коммит в Git: soft (сохраняет изменения в staging), mixed (сохраняет в рабочей директории), hard (полное удаление).

Как использовать

  1. Скопируйте нужный фрагмент кода.
  2. Вставьте в свой проект и при необходимости измените под задачу.
  3. Проверьте зависимости и окружение (версии, переменные).

Три варианта отката последнего коммита в зависимости от того, что нужно сохранить: изменения в 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 — это создаст новый коммит, отменяющий изменения, и не перепишет историю.