1 minute read

Если ты сделал 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 — забыть коммит и удалить изменения полностью