2011-01-06 11 views
116

Mam strukturę katalogów takiego:git ignorować wszystkie pliki określonego typu, z wyjątkiem tych, w określonym podkatalogu

  • korzeń
    • folder1
      • abc.json
      • def. json
      • somedir
        • more.json
    • folder2
      • qwe.json
      • rty.json
    • Spec
      • mock1.json
      • mock2.json
      • somedir
        • more_mocks.json

Teraz za pomocą .gitignore Chcę, aby ignorować wszystkie *.json pliki za wyjątkiem tych w spec. Nie chcę używać .gitignore w folder1 ani folder2, ponieważ jest ich mnóstwo i zostaną one dodane do partii i jestem pewien, że zapomnę przenieść odpowiedni plik .gitignore.

Ponadto może być więcej katalogów zagnieżdżonych z plikami json, a ta reguła musi również dotyczyć wszystkich podkatalogów.

Jak więc zignorować wszystkie pliki danego typu, z wyjątkiem pewnego podkatalogu?

Odpowiedz

184

Opcjonalny prefiks !, który neguje wzór ; dowolny pasujący plik wyłączony przez poprzedni wzór zostanie ponownie dołączony do wersji . Jeśli zanegowany wzorzec będzie pasował, zastąpi on niższe źródła wzorców pierwszeństwa.

http://schacon.github.com/git/gitignore.html

*.json 
!spec/*.json 
+3

Można też dodać .gitignore do spec zawierająca!/*. Json, jeśli wolisz. –

+1

Dzięki! Chociaż w moim przypadku zdałem sobie sprawę, że nie chcę w ogóle ignorować niczego w moim katalogu specyfikacji. Więc jestem w stanie uciec z bardzo prostym '! Spec'. Działa jak marzenie. –

+6

Podczas gdy odpowiedź Amber działa, gdy spec jest katalogiem pod najwyższym poziomem (tj./Spec), nie działa on dla mnie, gdy spec jest podkatalogiem, np./a/spec lub a/b/spec. Korzystanie z git 1.7.5.4 –

Powiązane problemy