Игнорирование содержимого уже зарегистрированного каталога?
У меня есть репозиторий git, который используется только для хранения графических и звуковых файлов, используемых в нескольких проектах. Все они находятся в одном каталоге без подкаталогов. Теперь я просто создал script для копирования этих активов из другого структурированного каталога с несколькими уровнями подкаталогов.
Теперь я хочу, чтобы иерархическая структура файла (source) отслеживалась с помощью git, и (целевой) плоский каталог (со всеми файлами в одной стопке) должен быть проигнорирован.
Я добавил целевой каталог в .gitignore, но git все еще отслеживает изменения в нем. Я думал, что если я зафиксирую удаление старого файла в целевом каталоге, git может перестать отслеживать новое содержимое (скопированное с помощью script), но это не так.
Как сделать git забыть о целевом каталоге?
Ответы
Ответ 1
Эта команда заставит git отследить ваш каталог и все файлы под ним, не удалив их фактически:
git rm -r --cached <your directory>
Параметр -r
вызывает удаление всех файлов под вашим каталогом.
Опция --cached
заставляет файлы удаляться только из индекса git, а не из вашей рабочей копии. По умолчанию git rm <file>
удалит <file>
.
Ответ 2
Если вам нужно иметь отслеживаемый файл (отмечен), но не хотите отслеживать дальнейшие изменения файла, сохраняя его в локальном репозитории, а также в удаленном репозитории, это можно сделать с помощью
git update-index --assume-unchanged path/to/file.txt
После этого любые изменения в этом файле больше не будут отображаться в git status
.
Ответ 3
Для подкаталога с именем blah/
, добавленного в git, оба из них, похоже, работают, чтобы игнорировать новые файлы в blah/
. Добавлено в .gitignore:
blah
blah/*
Ответ 4
Хорошо, вам сначала нужно выполнить регистрацию с полностью пустым каталогом (ни старыми, ни новыми файлами), а любые файлы, добавленные после этого, будут проигнорированы. Если вы удалите старые файлы add и новые, прежде чем совершать, новые будут добавлены в репо, хотя их следует игнорировать.
По крайней мере, это сработало для меня в этой ситуации. Было бы здорово, если бы кто-нибудь мог лучше понять, что происходит.