Git·19 питань

Як скасувати git add (прибрати файли з індексу)?

Відповідь

Якщо ви випадково додали файли в індекс через git add і хочете прибрати їх до коміту, є кілька способів.

git restore --staged <файл> — сучасний спосіб (Git 2.23+). Прибирає файл з індексу, але зберігає зміни в робочій директорії. Наприклад: git restore --staged index.html прибере файл з staged, але зміни у файлі залишаться. Команда git restore --staged . прибирає з індексу всі файли.

git reset HEAD <файл> — класичний спосіб, працює у всіх версіях Git. Робить те саме: прибирає файл з індексу, зміни залишаються. git reset HEAD . прибирає всі файли. Команда git reset (без аргументів) прибирає з індексу все.

git reset --soft HEAD~1 — якщо ви вже закомітили, але хочете повернути зміни в індекс (uncommit). Коміт скасовується, зміни залишаються staged. git reset --mixed HEAD~1 (або просто git reset HEAD~

— скасовує коміт і прибирає зміни з індексу (unstaged), але залишає в робочій директорії.

Повний сброс: git reset --hard HEAD видаляє всі зміни в робочій директорії та індексі — повертає до стану останнього коміту. Використовуйте лише якщо впевнені, що зміни не потрібні. Це необоротно (окрім через reflog).

Різниця між станами: Modified — файл змінено, але не додано в індекс. Staged — файл додано через git add, готовий до коміту. Committed — зміни збережені в коміті. git add переводить Modified → Staged. git restore --staged переводить Staged → Modified. git commit переводить Staged → Committed.

Практичний сценарій: ви зробили git add . і зрозуміли, що додали .env випадково. Виконайте git restore --staged .env — файл прибереться з індексу. Додайте .env в .gitignore, щоб уникнути цього в майбутньому. Якщо вже закомітили .env: git rm --cached .env, закомітьте видалення, додайте в .gitignore.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем