Сравни способы отмены коммита в Git и объясни, когда выбирать каждый вариант.
История и отмена изменений
Способ отмены коммита зависит от того, опубликован ли коммит и нужно ли сохранить изменения.
git revert — для опубликованных коммитов
git revert abc1234Создаёт новый коммит, который отменяет изменения указанного. История не переписывается — безопасно для общих веток.
git reset — для локальных коммитов
git reset --soft HEAD~1 # коммит убран, изменения в индексе
git reset --mixed HEAD~1 # коммит убран, изменения в рабочей копии (по умолчанию)
git reset --hard HEAD~1 # коммит и изменения удаленыПереписывает историю ветки. Для уже запушенных коммитов понадобится force push, поэтому в общих ветках так не делают.
git commit --amend — поправить последний коммит
git add forgotten-file.js
git commit --amendМеняет последний коммит (сообщение или содержимое). Тоже переписывает историю.
Если что-то потерялось
git reflog покажет прежнее положение ветки, и коммит можно вернуть.
Коротко для собеседования
Опубликованные коммиты отменяют через revert, локальные — через reset (soft/mixed/hard), последний коммит правят --amend.
Подробнее: Pro Git — Отмена изменений