Затирка коммита
Если ты сделал git add .
и хочешь, чтобы git “забыл” все проиндексированные (staged) файлы (то есть убрать их из индекса, но оставить изменения в рабочей директории), используй:
git reset
- Эта команда снимет все файлы из индекса (staging area), но не удалит изменения — они останутся в твоих файлах.
- После этого ты можешь снова выбрать, какие файлы добавить в индекс с помощью
git add
.
Если хочешь полностью откатить изменения (и в рабочей директории, и в индексе):
git reset --hard
В твоём случае — просто git reset
(без параметров) снимет все файлы с индекса, и ты сможешь выбрать нужные для следующего коммита.
Чтобы “забыть” (отменить) последний коммит, но оставить изменения в рабочей директории (чтобы их можно было поправить или закоммитить заново), используй:
git reset --soft HEAD~1
- Этот вариант уберёт последний коммит, но оставит изменения в индексе (staged).
Если хочешь, чтобы изменения были просто в рабочей директории (unstaged):
git reset --mixed HEAD~1
- Этот вариант уберёт последний коммит и “разстейджит” изменения.
Если нужно полностью удалить коммит и изменения:
git reset --hard HEAD~1
- Осторожно: изменения будут потеряны!
Если коммит уже был запушен на GitHub, после reset нужно сделать:
git push --force
- Это перепишет историю в удалённом репозитории.
Вывод:
-soft
— забыть коммит, оставить изменения staged-mixed
— забыть коммит, оставить изменения unstaged-hard
— забыть коммит и удалить изменения полностью