Ответы:
Не забывайте, согласно gitignore , что существует порядок приоритета в различных «источниках игнорирования шаблонов», которые учитывает Git:
$GIT_DIR/info/exclude.core.excludesfile.Последние два могут быть решением вашей проблемы, но:
(См. Также этот вопрос SO )
Два других решения включают обновление index ( git update-index):
git update-index --assume-unchanged: см. « Git: отследить файл только в локальном репо и сохранить его в удаленном репо ». git update-index --assume-unchangedв каталоге ». --no-assume-unchangeдля отмены эффекта: См. « Возможно ли, чтобы git addфайл в настоящее время защищен assume-unchanged? ».Однако, когда вы проверяете другую ветку или когда вы git pull, этот статус «игнорировать» может быть сброшен. Отсюда другой вариант:
git update-index --skip-worktree; видеть:
Разница между ними объясняется в « Git - разница между ' assume-unchanged' и ' skip-worktree' ».
update-index --skip-work-tree. Я отредактировал ответ, чтобы добавить несколько ссылок на мои старые ответы, иллюстрирующие эти две update-indexкоманды.
Если вы можете изменить, .git/info/excludeвы можете поместить туда те же правила. Но этот файл находится только в вашем локальном репо.
.gitподмодуле нет каталога ...
.gitсамом деле находится папка подмодуля parent_repo/.git/modules/submodule_name. Итак, вы бы отредактировалиparent_repo/.git/modules/submodule_name/info/exclude
Есть три способа указать GIT, какие файлы игнорировать:
.gitignore файлы$GIT_DIR/.git/info/excludecore.excludesfileнастройкаПоследние два пункта могут решить вашу проблему.
Для получения дополнительной информации см. Gitignore (5) .
Если вы просто хотите иметь несколько локальных файлов в репозитории, а расположение подкаталога является гибким, вы можете поместить свои файлы, tracked_dir1/tracked_dir2/untracked_dir/а затем добавить их tracked_dir1/tracked_dir2/untracked_dir/.gitignoreс таким содержимым, как:
*
Т.е.
$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>
Я был в подобных ситуациях, поэтому я добавляю свое предпочтительное решение, о котором я не упоминаю. Проблема git update-index --assume-unchangedв том, что вы не можете сделать это для неотслеживаемого файла. Ты сказал
Я не могу изменить .gitignore своего репозитория.
Я предполагаю, что вы имеете в виду, что вы не можете вносить какие-либо изменения .gitignoreв origin. Если это так, то вы можете добавить неотслеживаемый файл на свой локальный компьютер .gitignore, а затем сделайте git update-index --assume-unchanged .gitignoreтак, чтобы ваши изменения .gitignoreникогда не передавались. Теперь вы игнорируете (возможно) неотслеживаемый файл и не влияете на удаленный .gitignoreфайл.
Игнорировать локальные изменения в отслеживаемых файлах:
git update-index --assume-unchanged my-file.php
Отменить локальные изменения в отслеживаемых файлах:
git update-index --no-assume-unchanged my-file.php
источник: git help update-index
--[no-]assume-unchanged
...
This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
changed upstream, you will need to handle the situation manually.
Вы можете использовать глобальный метод gitignore вместо изменения метода в проекте https://help.github.com/articles/ignoring-files/#create-a-global-gitignore
update-index --assume-unchanged@see stackoverflow.com/a/25253144/292408