Временно удалить файлы из git

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

13 ответов

Решение

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

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

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

Github Документация: обновление-индекс

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

git rm -r --cached <file>

добавьте ваши файлы с

git add -u

их подталкивать или делать что хочешь.

git rm --cached

Тем не менее, вы не должны в первую очередь создавать скомпилированные двоичные файлы и внешние зависимости. Используйте инструмент, такой как Bundler, чтобы использовать их.

Используйте следующую команду, чтобы распаковать файлы

git rm --cached <file path>

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

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

git ls-files -v

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

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

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

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

git rm -r -f /build\*

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

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

Альтернатива assume-unchanged является skip-worktree. Последнее имеет другое значение, что-то вроде "Git не должен отслеживать этот файл. Разработчики могут и могут вносить локальные изменения".

В вашей ситуации, когда вы не хотите отслеживать изменения в (обычно больших) файлах сборки, assume-unchanged хороший выбор.

В ситуации, когда файл должен иметь содержимое по умолчанию, и разработчик может изменить файл локально, но не должен проверять свои локальные изменения обратно в удаленное репо, skip-worktree лучший выбор.

Другой элегантный вариант - иметь файл по умолчанию в репо. Скажите, что имя файлаBuildConfig.Default.cfg. Ожидается, что разработчик переименует это локально вBuildConfig.cfgи они могут внести любые местные изменения, которые им нужны. Теперь добавьтеBuildConfig.cfg к .gitignore поэтому файл не отслеживается.

См. Этот вопрос, который содержит полезную справочную информацию в принятом ответе.

Чтобы удалить все файлы Untrack. Попробуйте эту команду терминала

 git clear -fdx

git reset [файл]

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

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

Бегать

      git rm -r --cached file_to_git_ignore

Тогда иди к себеgitignoreфайл и добавитьpath_to_file_to_git_ignore

Удачи

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

git reset HEAD 'имя файла'

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

Другие вопросы по тегам