Включая конкретное расширение файла в 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
) пытается добавить эту функцию:
- commit 506d8f1 для git v2.7.0, возвращен в commit 76b620d git v2.8.0-rc0
- commit 5e57f9c git v2.8.0-rc0,... отменён (!) в коммите 5cee3493 git 2.8.0-rc4.
Однако, так как одно из условий для повторного включения было:
Часть каталога в правилах повторного включения должна быть буквальной (то есть без подстановочных знаков)
Это не сработало бы здесь.