🧱 Суть

В 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 – старый, но всё ещё рабочий вариант

🔗 Связано