2013-05-14 19 views
49

Próbuję uniknąć następującego wzoru w moim pliku .gitignore.W jaki sposób .gitignore pliki rekursywnie

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 

Staraliśmy:

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

To jednak nie działa. To jest git w systemie Windows. Czy jest to bardziej zwięzły sposób bez powtarzania rzeczy?

+0

Możliwy duplikat [Poprawnie ignorować wszystkie pliki rekurencyjnie pod określonym folderze z wyjątkiem określonego typu pliku] (https://stackoverflow.com/ pytania/17812717/poprawnie-zignoruj-wszystkie-pliki-rekurencyjnie-pod-specyficzny-folder-z wyjątkiem-do-specyfikacji) – Sam

Odpowiedz

49

Od git 1.8.2, to:

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

powinien funkcjonować według this answer. Działa również dla mnie w Windows 7 przy użyciu Sourcetree 1.6.12.0 i wersji git, którą instaluje (1.8.4-preview20130916).

Aby gitignore każdy plik i folder w katalogu rekurencyjnie:

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

Co powiesz na przed git 1.8? – ashes999

+1

Jeśli ta odpowiedź nie działa (w systemie Windows), dodaj znak '/' na początku. Przykład: '/ MyProject/WebApp/Scripts/special/**/*. Js' – batressc

+1

Jestem zakłopotany, że moja odpowiedź ciągle się zmienia, gdy jest to dosłownie link do * innej * odpowiedzi. – Sam

15

Po gitignore ręcznego stronie:

[...] traktuje git wzór jako glob powłoka nadaje się do spożycia przez fnmatch (3) z flagą FNM_PATHNAME: dzikie karty w wzór nie będzie pasować a/w ścieżce.

Tak, to wyraźnie stoi, że nie ma sposobu, aby określić pewną ilość katalogów między dwa ciągi, jak i między specialjs.

Niemniej jednak, może masz plik .gitignore za katalogu, więc może w Twoim przypadku następującą treść

*.js 

w następującej kolejności

MyPrject/WebApp/Scripts/special/.gitignore 

byłaby wystarczająca?

+0

Kiedyś miałem 'MyPrject/WebApp/Scripts/special * .js' i było dopasowane 'MyPrject/WebApp/Scripts/specialfile.js' oraz' MyPrject/WebApp/Scripts/special/a/b/c/file.js'. Jednak z jakiegoś powodu zachowanie się zmieniło i moim obecnym rozwiązaniem jest indywidualna lista katalogów. Używam GitHub dla Windows. – orad

+1

np. 'find MyPrject/WebApp/Scripts/special -type d -printf 'echo" * .js ">>% h/.gitignore \ n git dodaj% h/.gitignore \ n' | sh' – jthill

Powiązane problemy