Временно удалить файлы из git - PullRequest
413 голосов
/ 06 августа 2011

Я установил локальный мерзавец на моей машине.Когда я инициализировал git, я добавил предварительно скомпилированные библиотеки и двоичные файлы.Однако сейчас, во время разработки, я не хочу периодически проверять эти файлы.Я не хочу удалять эти файлы из репо.Есть ли способ не отслеживать эти файлы, пока я не закончу свою разработку.(Я думаю, что не могу использовать .gitignore, так как он работает только для тех файлов, которые не находятся в git. Я хочу временно отключить отслеживание файлов.)

Ответы [ 11 ]

665 голосов
/ 06 августа 2011

git update-index должен делать то, что вы хотите

Это сообщит git, что вы хотите начать игнорировать изменения в файле
git update-index --assume-unchanged path/to/file

Когда вы захотите начать отслеживать снова
git update-index --no-assume-unchanged path/to/file

Документация Github: update-index

229 голосов
/ 18 апреля 2015

вы можете сохранить ваши файлы без отслеживания после того, как

git rm -r --cached <file>

добавьте ваши файлы с помощью

git add -u

их нажмите или сделайте что хотите.

107 голосов
/ 06 августа 2011
git rm --cached

Тем не менее, вы не должны создавать компилированные двоичные файлы и внешние зависимости. Вместо этого используйте такой инструмент, как Bundler.

24 голосов
/ 21 декабря 2016

Используйте следующую команду для удаления файлов

git rm --cached <file path>
7 голосов
/ 01 июля 2013

Git-book упоминает об этом в разделе 2.4: «Отмена вещей».По сути, вам нужно сбросить состояние индекса для некоторых файлов обратно в состояние HEAD, то есть в состояние последней проверки (или фиксации).Это отменяет размещение файла в текущем индексе.Команда для этой задачи: git reset. [1]

Итак, команда, которую вы должны выполнить:

git reset HEAD /path/to/file

Более новые версии git (я полагаю, начиная с 1.6 или около того) дает эту команду (и многие другие) в качестве подсказки при выполнении git status.Эти версии очень удобны для пользователя.Персональный совет: если вы создаете только несколько файлов, используйте git add -i.Это запустит интерактивный инструмент постановки, который делает вещь особенно легкой.Кроме того, я настоятельно рекомендую прочитать книгу, поскольку в ней очень подробно говорится об использовании git в практических ситуациях.

[1] http://www.git -scm.com / book

5 голосов
/ 07 ноября 2016

Не ответ на оригинальный вопрос.Но это может кому-то помочь.

Чтобы просмотреть сделанные вами изменения ( знает, какие файлы помечены как --assume-unchanged )

git ls-files -v

Список результатовфайлов будет иметь префикс с одним символом (например, H или h). Если это строчная буква (то есть h), то файл был помечен --assume-неизменным

5 голосов
/ 06 апреля 2015

Я предполагаю, что вы спрашиваете, как удалить ALL файлы в папке сборки или в папке bin, а не выбирать каждый файл отдельно.

Вы можете использовать эту команду:

git rm -r -f /build\*

Убедитесь, что вы находитесь в родительском каталоге каталога сборки.
Эта команда рекурсивно «удалит» все файлы, которые находятся в папках bin / или build /. Под словом «удалить» я подразумеваю, что git сделает вид, что эти файлы «удалены», и эти файлы не будут отслеживаться. Git действительно помечает эти файлы как находящиеся в режиме удаления.

Убедитесь, что ваш .gitignore готов к предстоящим коммитам.
Документация: git rm

1 голос
/ 20 ноября 2018

Это сработало для меня

git reset HEAD 'filename'

1 голос
/ 08 февраля 2017

git reset [file]

Получить файл обратно из рабочей области в рабочий каталог

Я часто забываю добавлять свои модули узлов в файл .gitignore, это решает эту проблему.

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

для удаления неотслеживаемых файлов и папок установите git clean -fdx

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