Как .gitignore файлы рекурсивно

Я пытаюсь избежать следующего шаблона в моем файле .gitignore.

MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js

Мы попробовали:

MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js

Это, однако, не сработало. Это git в Windows. Есть ли более сжатый способ сделать это, не повторяя ничего?

Ответ 1

В соответствии с git 1.8.2 это:

MyPrject/WebApp/Scripts/special/**/*.js

Должен работать в соответствии с этим ответом. Он также работает для меня в Windows 7 с использованием Sourcetree 1.6.12.0 и версии git, которую он устанавливает (1.8.4-preview20130916).

Чтобы gitignore каждый файл и папка в каталоге рекурсивно:

MyPrject/WebApp/Scripts/special/**

Ответ 2

Следующая страница руководства gitignore:

[...] git рассматривает шаблон как оболочку, подходящую для   потребление fnmatch (3) с флагом FNM_PATHNAME: подстановочные знаки в   шаблон не будет соответствовать/в пути.

Итак, это ясно означает, что нет способа указать определенное количество каталогов между двумя строками, например между special и js.

Тем не менее, вы можете иметь файл .gitignore для каждого каталога, поэтому, возможно, в вашем случае следующий контент

*.js

в следующем месте

MyPrject/WebApp/Scripts/special/.gitignore

было бы достаточно?