🧱 Суть
В Git можно случайно добавить файлы в staging area (git add), и потом нужно убрать их оттуда, не теряя сами изменения в коде.
📦 Проблема
После git add .:
- в коммит попадает лишнее
- нет контроля над тем, что именно уйдёт в commit
- легко случайно закоммитить мусор (debug, временные файлы и т.д.)
✅ Решение
Использовать команды, которые убирают файл из stage, но оставляют изменения в рабочей директории.
💻 Код
Убрать конкретный файл из stage
git restore --staged src/app/App.tsxАльтернатива (старый способ)
git reset HEAD src/app/App.tsxУбрать все файлы из stage
git restore --staged .или
git resetЧто происходит внутри
После выполнения:
- файл исчезает из staging area
- остаётся в
working directory - изменения в коде не теряются
- можно заново выбрать, что коммитить
Как думать об этом
working directory → git add → staging → git commit
↑
здесь можно “передумать”Важно
restore --staged❗ не удаляет кодresetбез флагов тоже только снимает со stage- это безопасные операции (если не использовать жёсткие reset/checkout)
🎯 Вывод
- staging можно “откатывать” без потери изменений
git restore --staged– современный и правильный способgit reset– старый, но всё ещё рабочий вариант