Как удалить один файл из области подготовки (отменить git add)?
Ситуация: У меня есть репозиторий Git с файлами, уже находящимися в индексе. Я вношу изменения в несколько файлов, откройте Git и добавьте эти файлы в мою промежуточную область с помощью git add. "
Вопрос: Как удалить один из этих файлов из промежуточной области, но не удалить его из индекса или отменить изменения в самом файле?
Ответы
Ответ 1
Если я правильно понимаю вопрос, вы просто хотите "отменить" git add
которое было сделано для этого файла.
Если вам нужно удалить один файл из области подготовки, используйте
git reset HEAD -- <file>
Если вам нужно удалить весь каталог (папку) из области подготовки, используйте
git reset HEAD -- <directoryName>
Ваши модификации будут сохранены. Когда вы запустите git status
файл снова будет отображаться как измененный, но еще не подготовленный.
См. Страницу руководства git reset
для деталей.
Ответ 2
git rm --cached FILE
git rm -r --cached CVS */CVS
Ответ 3
git reset <file>
Работает ли у вас какие-либо предыдущие фиксации.
Ответ 4
Итак, небольшая настройка для Тима Хенигана отвечает: вам нужно использовать - перед именем файла. Это будет выглядеть так:
git reset HEAD -- <file>
Ответ 5
git reset filename.txt
Если у вас есть изменение в filename.txt, вы добавили его на сцену по ошибке и хотите удалить файл из промежуточной, но не хотите потерять изменения.
Ответ 6
Если вам просто нужно удалить подмножество изменений в файл, вы можете использовать:
git reset -p
или
git reset -p <file_name>
Эта команда в основном обратная сторона git add -p
: она удалит только выбранные изменения из промежуточной области. Я нахожу его чрезвычайно полезным в "неудобном" то, что я добавил по ошибке.
Ответ 7
Если вы хотите удалить файлы по определенному шаблону и используете git rm --cached
, вы также можете использовать шаблоны файловых глобусов.
Смотрите здесь
Ответ 8
Вы хотите:
-
Влияет на один файл
-
Удалить файл из промежуточной области
-
Не удалять один файл из индекса
-
Не отменяйте само изменение
и решение
git reset HEAD file_name.ext
или
git reset HEAD path/to/file/file_name.ext
Ответ 9
Когда вы делаете git status
, Git сообщает вам, как выполнить unstatage:
Changes to be committed: (use "git reset HEAD <file>..." to unstage).
Так что git reset HEAD <file>
работал для меня, и изменения не были затронуты.
Ответ 10
Если вы вносите изменения во многие отслеживаемые файлы, но хотите создать только несколько из них, выполните
git add.
не всегда выгодно (или рекомендуется) - поскольку он отслеживает все отслеживаемые файлы (в некоторых случаях вы хотите сохранить изменения только для себя и не хотите вносить их в удаленный репозиторий).
и это не идеально делать кучу
git add path/to/file1 path/to/file2
если у вас много вложенных каталогов (что имеет место в большинстве проектов) - раздражает
Это когда Git GUI полезен (вероятно, только когда я его использую). Просто откройте Git GUI, он показывает разделенные и неподготовленные разделы файла. Выберите из промежуточного раздела файлы, которые вы хотите удалить, и нажмите
Ctrl+U
(для окон)
расшатать их.
Ответ 11
Используйте эту команду для всех файлов, папок:
git reset *
Конечно, проверьте по команде:
git status
Ответ 12
Я думаю, что вы, вероятно, запутались с понятием индекса, как заметил @CB Bailey:
Зона подготовки является индексом.
Вы можете просто рассматривать промежуточный каталог и индекс как одно и то же.
Так что, как и ответ @Tim Henigan, я думаю:
Вы просто хотите "отменить" git add
которое было сделано для этого файла.
Вот мой ответ:
Как правило, есть два способа отменить операцию этапа, как уже упоминалось в других ответах:
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>
Эта команда для ситуации, когда файл был поставлен, но файл был изменен в рабочем каталоге после того, как она была поставлена, использовать эту операцию, чтобы восстановить файл в рабочем каталог из устроив каталог. Другими словами, после этой операции изменения происходят в вашем рабочем каталоге, а НЕ в вашем промежуточном каталоге.
Ответ 13
Вам нужно находиться в каталоге файла, а затем ввести в терминал
следующее:
git reset HEAD .
Предполагается, что вам нужно reset только один файл.
Ответ 14
Чтобы отключить все сразу, запустите эту команду
git reset HEAD -- .
Ответ 15
git checkout -- <file>
Он отлично работает для удаления файлов из области хранения
Ответ 16
В моем случае я делаю
git checkout -- FILE