2013-05-14 5 views
49

Я пытаюсь избежать следующего шаблона в файле .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. Есть ли более сжатый способ сделать это, не повторяя ничего?

+0

Возможный дубликат [Правильно игнорировать все файлы рекурсивно под конкретную папку для определенного типа файла, за исключением] (https://stackoverflow.com/ questions/17812717/correct-ignore-all-files-recursively-under-a-specific-folder-except-for-a-spec) – Sam

ответ

49

По мерзавца 1.8.2, это:

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

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

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

MyPrject/WebApp/Scripts/special/** 
+0

Как насчет до git 1.8? – ashes999

+1

Если этот ответ не работает (в Windows), добавьте символ '/' в начале. Пример: '/ MyProject/WebApp/Scripts/special/**/*. Js' – batressc

+1

Я смущен тем, что мой ответ продолжает получать upvotes, когда это буквально ссылка на * другой * ответ. – Sam

15

После gitignore ручной страницы:

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

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

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

*.js 

на следующем месте

MyPrject/WebApp/Scripts/special/.gitignore 

будет достаточно?

+0

Раньше у меня был MyPrject/WebApp/Scripts/special * .js', и он соответствовал 'MyPrject/WebApp/Scripts/specialfile.js', а также' MyPrject/WebApp/Scripts/special/a/b/c/file.js'. Однако по какой-то причине поведение изменилось, и моим текущим обходным путем является список каталогов по отдельности. Я использую GitHub для Windows. – orad

+1

, например. 'find MyPrject/WebApp/Scripts/special -type d -printf 'echo" * .js ">>% h/.gitignore \ n git add% h/.gitignore \ n' | sh' – jthill

Смежные вопросы