Как удалить один файл из промежуточной области Git, но не удалить его из индекса или отменить изменения самого файла? - PullRequest
1119 голосов
/ 01 октября 2009

Ситуация: У меня есть Git-репозиторий с файлами в индексе. Я делаю изменения в нескольких файлах, открываю Git и добавляю эти файлы в мою область с помощью «git add».

Вопрос: Как удалить один из этих файлов из области подготовки, но не удалить его из индекса или отменить изменения в самом файле?

Ответы [ 15 ]

0 голосов
/ 22 февраля 2019

Я думаю, вы, вероятно, запутались с понятием index , как @ CB Bailey прокомментировал:

Область подготовки является индексом.

Вы можете просто рассматривать промежуточный каталог и index как одно и то же.
Так что, как и @ ответ Тима Хенигана , я думаю:

Вы просто хотите "отменить" git add, которое было сделано для этого файла.



Вот мой ответ:

Обычно есть два способа отменить операцию stage , как уже упоминалось в других ответах:

git reset HEAD <file>

и

git rm --cached <file>

а какая разница?

Предположим, что файл подготовлен и существует в рабочем каталоге , используйте git rm --cached <file>, если хотите удалить его из промежуточный каталог , и сохраните файл в рабочем каталоге . Но обратите внимание, что эта операция не только удалит файл из промежуточного каталога , но также пометит файл как deleted в промежуточном каталоге , если вы используете

git status

после этой операции вы увидите следующее:

        deleted:    <file>

Это запись об удалении файла из промежуточной директории . Если вы не хотите сохранять эту запись и просто хотите отменить предыдущую операцию с файлом, используйте git reset HEAD <file>.


-------- КОНЕЦ ОТВЕТА --------

PS: я заметил несколько упомянутых ответов:

git checkout -- <file>

Эта команда предназначена для ситуации, когда файл был подготовлен , но файл был изменен в рабочий каталог после того, как он был подготовлен, используйте эту операцию для восстановления файла в рабочий каталог из промежуточный каталог . Другими словами, после этой операции изменения происходят в вашем рабочем каталоге , а НЕ в промежуточном каталоге .

0 голосов
/ 26 сентября 2017

Вы должны быть в каталоге файла и затем ввести следующее в терминал

git reset HEAD .

Предполагается, что вам нужно сбросить только один файл.

0 голосов
/ 06 сентября 2016

Чтобы удалить все сразу, выполните эту команду

git reset HEAD -- .
0 голосов
/ 18 мая 2015

git checkout -- <file>

Отлично работает для удаления файлов из рабочей области

0 голосов
/ 15 мая 2014

В моем случае я делаю

git checkout -- FILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...