← Все вопросы
Как отменить последний коммит, но оставить изменения в файлах?
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 дней назад
Ваш ответ
Войдите, чтобы ответить на вопрос.