← Все вопросы

Как отменить последний коммит, но оставить изменения в файлах?

Задан 21 день назад724 просмотров3 ответа
14

Закоммитил рано — забыл доделать пару правок и хочу всё объединить в один коммит. Нужно «развалить» последний коммit обратно, чтобы изменения вернулись в рабочую копию и я их потом перекоммитил. Только не потерять код!

3 ответа

22
✓ Принятый ответ — помог автору

git reset --soft HEAD~1 — коммит снят, изменения остались в индексе (staged), код цел.

Елена Соколова Если хочешь, чтобы они стали unstaged — `--mixed` вместо `--soft` (или просто `git reset HEAD~1`, mixed по умолчанию). · 12 дней назад
13

Три режима reset, важно не перепутать:

git reset --soft  HEAD~1   # снять коммит, изменения остаются в staging
git reset --mixed HEAD~1   # снять коммит, изменения в рабочей копии (unstaged)
git reset --hard  HEAD~1   # снять коммит И ВЫКИНУТЬ изменения (опасно!)

Тебе нужен --soft (или --mixed). --hard уничтожает правки — его в этой ситуации не трогай.

7

Если коммит уже запушен — лучше git revert HEAD (создаст обратный коммит), а не reset, иначе история разъедется с remote.

Антон Киселев Это если работаешь не один. Для локального — reset ок. · 12 дней назад

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект