Включая конкретное расширение файла в gitignore

Я хочу включить все файлы *.meta в каталог Assets и все подкаталоги, исключая все остальное в Assets

Я старался

/Assets/*
!/Assets/**/*.meta
!*.meta

но это только включает *.meta в пределах / активы????

Спасибо за любую помощь

1 ответ

Решение

Во-первых, если правило игнорирования не работает, вы можете проверить это с помощью git check-ignore:

git check-ignore -v -- yourFile

Он покажет, какое правило игнорирования игнорирует файл, который, по вашему мнению, не должен игнорироваться.

Тогда главное правило, которое нужно помнить, когда дело доходит до игнорирования:

Невозможно повторно включить файл, если родительский каталог этого файла исключен. (*)
(*: если в git 2.?+ не выполнены определенные условия, см. ниже)

Вот почему ваши правила включают только *.meta в /Assets (а не подкаталоги)

Вам нужно будет включить все родительские папки файла (как в этом недавнем примере), чтобы включить файл

/Assets/**/**
! /Assets/**/
!/Assets/**/*.meta

Я тестировал его с помощью git 2.4.1, и он работает (даже на Windows).
Это включает только *.meta файлы в Assets и все подкаталоги, но исключить все остальное.


Обратите внимание, что в git 2.9.x/2.10 (середина 2016 года?) Может оказаться возможным повторно включить файл, если родительский каталог этого файла будет исключен, если в пути не будет подстановочного знака.

Nguy Thn Thái Ngọc Duy ( pclouds ) пытается добавить эту функцию:

Однако, так как одно из условий для повторного включения было:

Часть каталога в правилах повторного включения должна быть буквальной (то есть без подстановочных знаков)

Это не сработало бы здесь.

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