Commit 59856de di Karsten Blees (kblees) per Git 1.9 / 2.0 (Q1 2014) chiarisce questo caso:
gitignore.txt
: chiarire la natura ricorsiva delle directory escluse
Un prefisso opzionale " !
" che nega il modello; qualsiasi file corrispondente escluso da un modello precedente verrà nuovamente incluso.
Non è possibile includere nuovamente un file se viene esclusa una directory padre di quel file. ( *
)
( *
: A meno che non siano rispettate determinate condizioni in git 2.8 o successiva, vedi sotto)
Git non elenco directory per motivi di prestazioni escluso, in modo che qualsiasi modelli su file contenuti non hanno alcun effetto, non importa dove essi sono definiti.
Metti una barra rovesciata (" \
") davanti al primo " !
" per i modelli che iniziano con un " !
" letterale , ad esempio " \!important!.txt
".
Esempio per escludere tutto tranne una directory specifica foo/bar
(notare il /*
- senza la barra, il carattere jolly escluderebbe anche tutto all'interno foo/bar
):
--------------------------------------------------------------
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
--------------------------------------------------------------
Nel tuo caso:
application/*
!application/**/
application/language/*
!application/language/**/
!application/language/gr/**
È necessario prima elencare le cartelle nella white list , prima di poter elencare i file nella white list in una determinata cartella.
Aggiornamento febbraio / marzo 2016:
Si noti che con git 2.9.x / 2.10 (metà 2016?), Potrebbe essere possibile includere nuovamente un file se una directory padre di quel file viene esclusa se non sono presenti caratteri jolly nel percorso .
Nguyễn Thái Ngọc Duy ( pclouds
) sta cercando di aggiungere questa funzione:
Quindi con git 2.9+, questo avrebbe potuto effettivamente funzionare, ma alla fine è stato ripristinato:
application/
!application/language/gr/
.gitignore
documentazione sul "formato del modello" sia diventata più chiara (dicembre 2013). Vedi la mia risposta qui sotto