← Все вопросы

Как отменить git add и убрать файл из индекса?

Задан 16 месяцев назад1.4к просмотров2 ответа
8

Случайно сделал git add . и добавил в индекс лишний файл, который не хотел коммитить. Как убрать файл из staged, не теряя изменения в нём? Ищу «как отменить git add».

2 ответа

10
✓ Принятый ответ — помог автору

Тебе нужно разстейджить файл — убрать из индекса, но сохранить правки в нём.

Современный способ (git 2.23+):

git restore --staged лишний_файл.txt

Классический способ, который работает на всех версиях:

git reset лишний_файл.txt

или подробнее git reset HEAD лишний_файл.txt. Обе команды уберут файл из «Changes to be committed», но сами изменения в файле останутся — он просто вернётся в «не staged».

Если надо убрать из индекса сразу всё, что наadd'ил:

git reset

(без указания файла — разстейджит всё, изменения тоже остаются).

Кстати, сам git подсказывает это: после git add команда git status пишет «use git restore --staged <file>... to unstage».

Частая ошибка: перепутать с git reset --hard или git restore лишний_файл (без --staged). Эти команды удалят изменения в файле! Чтобы только убрать из индекса, но СОХРАНИТЬ правки — обязательно используй git reset файл или git restore --staged файл. Флаг --staged тут ключевой.

3

Держи разницу в одной табличке:

  • git restore --staged файл → убрать из индекса, изменения остаются.
  • git restore файл → выбросить изменения в файле (вернуть к коммиту).
  • git reset файл → то же, что первое (классический вид).

Для отмены git add бери варианты со словом staged или просто git reset файл. Без --staged рискуешь потерять правки.

Ваш ответ

, чтобы ответить на вопрос.