2015-05-27 18 views
6

Mam katalog o nazwie/static. Jest w nim wiele podkatalogów. Muszę zignorować wszystkie pliki we wszystkich podkatalogach katalogu/static/z wyjątkiem plików .htaccess, null.jpg i index.php. Powiedz mi, proszę, jaka jest prawidłowa składnia tej operacji?Gitignore wykluczyć niektóre pliki we wszystkich podkatalogach

/static/** 
!/static/**/.htaccess 

i

/static/* 
!/static/*/.htaccess 

nie działają.

+0

Myślę, że należy najpierw dodać do białej listy katalogi. Czy '!/Static/** /' działa jako druga linia w twoim pierwszym podejściu? –

Odpowiedz

6

Jak już wspomniano w "Including specific file extension in gitignore", główną zasadą jest, aby pamiętać:

It is not possible to re-include a file if a parent directory of that file is excluded. (*)
(*: o ile spełnione są określone warunki w git 2.?+, patrz niżej)

Dlatego każda reguła, która ignoruje foldery (np. * lub */), uniemożliwiłaby wykluczenie jakichkolwiek pod-plików.

Dlatego właściwym podejściem jest wykluczenie wszystko oprócz:

  • foldery
  • (następnie) pliki, które chcesz wykluczyć.

Jeśli nie wyklucza foldery pierwszy, pliki nadal będzie ignorowane (bo z reguły wspominam powyżej)

więc dodać w swoim .gitignore:

/static/**/** 
!/static/**/ 
!.gitignore 
!.htaccess 

To jest testowany z Git 2.4.1 i działa nawet w systemie Windows.


Należy zauważyć, że z git 2.9.x/2.10 (w połowie 2016?), To może być możliwe, aby ponownie włączyć plik czy katalog nadrzędny tego pliku jest wykluczone if there is no wildcard in the path re-included.

Nguyễn Thái Ngọc Duy (pclouds) próbuje dodać tę funkcję:

Jednakże, ponieważ jednym z warunków było „Część katalogu w re obejmują zasady muszą być dosłowne (czyli żadnych symboli wieloznacznych)”, nie można korzystać z tej funkcji tutaj tak.

Powiązane problemy