PassFront
  1. PassFront
  2. База знаний
  3. История и отмена изменений

Сравни способы отмены коммита в 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 — Отмена изменений

Другие вопросы раздела