Шаблон игнорирования:
!0/*.png
означает «не игнорировать файл *.png
, который напрямую внутри папки с именем 0».Так что это будет включать 0/abc.png
, и это будет включать 1/0/def.png
, но это исключит 0/1/ghi.png
.
Если вы хотите включить все *.png
ниже папки 0, есть два способа сделатьthis.
Вы можете использовать следующий шаблон:
*.png
!/0/**/*.png
Шаблон **
соответствует любой серии подкаталогов, включая корневой.Запуск шаблона с /
означает, что шаблон должен совпадать, начиная с текущего каталога.Так что это будет включать 0/abc.png
, 0/subdir/def.png
и 0/subdir/ghi/jkl.png
.Это исключит abc.png
и 1/abc.png
.
В качестве альтернативы, вы можете создать файл .gitignore
с
*.png
, а затем вы можете создать еще один файл, 0/.gitignore
, которыйсодержит:
!*.png
Это немного более очевидно, и оно имеет точно такой же эффект.
Демо
Вот базовое правило *.png
, оно игнорируетсявсе *.png
файлы:
$ git init
Initialized empty Git repository in .../.git/
$ mkdir -p 0/1
$ touch img.png 0/img.png 0/1/img.png
$ cat >.gitignore
*.png
$ git add -n .
add '.gitignore'
Вот ваше правило, которое включает в себя любые *.png
внутри любого каталога с именем 0
:
$ cat >.gitignore
*.png
!0/*.png
$ git add -n .
add '.gitignore'
add '0/img.png'
Вот фиксированный шаблон:
$ cat >.gitignore
*.png
!/0/**/*.png
$ git add -n .
add '.gitignore'
add '0/1/img.png'
add '0/img.png'
Вот альтернатива:
$ cat >.gitignore
*.png
$ cat >0/.gitignore
!*.png
$ git add -n .
add '.gitignore'
add '0/.gitignore'
add '0/1/img.png'
add '0/img.png'