git reset

Передвинуть ветку на другой коммит, например отменить последние коммиты

Что делает

git reset переставляет текущую ветку на указанный коммит. HEAD~1 — это коммит перед последним, HEAD~3 — на три назад. Коммиты после него пропадают из ветки, а что станет с их изменениями, решает флаг.

--soft оставляет изменения в индексе: их можно сразу закоммитить заново, например одним коммитом вместо нескольких. Без флага (режим --mixed) изменения остаются в файлах, но уходят из индекса. --hard выбрасывает их совсем.

Осторожно. --hard стирает и отменённые коммиты, и все незакоммиченные правки в отслеживаемых файлах. Коммиты, которые уже на сервере, лучше отменять через git revert: reset переписывает историю, и обычный git push не пройдёт.

Синтаксис

git reset --soft <коммит>
git reset <коммит>
git reset --hard <коммит>

Примеры

Связанные команды

Потренировать · Все команды