У меня есть git-репозиторий, который используется только для хранения графических и звуковых файлов, используемых в нескольких проектах. Все они находятся в одном каталоге без подкаталогов. Теперь я только что создал сценарий для копирования этих активов из другого, структурированного каталога с несколькими уровнями подкаталогов.
Теперь я хочу, чтобы git отслеживал только (исходную) иерархическую файловую структуру, а (целевой) плоский каталог (со всеми файлами в одной куче) игнорировался.
Я добавил целевой каталог в .gitignore, но git всё равно отслеживает изменения в нём. Я думал, что если я зафиксирую удаление старого файла в целевом каталоге, git перестанет отслеживать новое содержимое (скопированное скриптом), но этого не происходит.
Как заставить git забыть о целевом каталоге?
Эта команда заставит git отследить ваш каталог и все файлы под ним, не удаляя их:
git rm -r --cached <ваш каталог>
.
Опция -r
приводит к удалению всех файлов под вашей директорией.
Опция --cached
приводит к удалению файлов только из индекса git'а, а не из вашей рабочей копии. По умолчанию git rm <file>
удалит <file>
.
Если вам необходимо, чтобы отслеживаемый файл (проверил), но не хотите, чтобы отслеживать дальнейшие изменения файла, удерживая ее в свой локальный репозиторий, а также в удаленный репозиторий, это может быть сделано с:
git update-index --assume-unchanged path/to/file.txt
После этого любые изменения в этот файл не будет отображаться в статус ГИТ
.
Не уверен, если это считается или делает меня плохим человеком, но здесь оно идет.
*автоматически*
к корню .файл гитюдного реж *.CheckedIn -рекурсия | %{ копия $_.Полное имя " и$($_.Полное имя) и".Заменить (на"CheckedIn" и" Ну и") -ЕА результат}
Я чувствую себя немного плохо о себе... но это на самом деле работает.
Итак, похоже, что сначала нужно выполнить регистрацию с полностью пустым каталогом (ни старых, ни новых файлов), и все добавленные после этого файлы будут проигнорированы. Если вы удалите старые файлы и добавите новые перед фиксацией, новые файлы будут добавлены в репозиторий, хотя они должны быть проигнорированы.
По крайней мере, это сработало для меня в данной ситуации. Было бы здорово, если бы кто-нибудь смог дать более подробную информацию о том, что происходит.