Commit 59856de de Karsten Blees (kblees) pour Git 1.9 / 2.0 (Q1 2014) clarifie ce cas:
gitignore.txt
: clarifier la nature récursive des répertoires exclus
Un préfixe facultatif " !
" qui annule le modèle; tout fichier correspondant exclu par un modèle précédent sera à nouveau inclus.
Il n'est pas possible de ré-inclure un fichier si un répertoire parent de ce fichier est exclu. ( *
)
( *
: sauf si certaines conditions sont remplies dans git 2.8+, voir ci-dessous)
Git ne répertorie pas les répertoires exclus pour des raisons de performances, donc les modèles sur les fichiers contenus n'ont aucun effet, peu importe où ils sont définis.
Mettez une barre oblique inversée (" \
") devant le premier " !
" pour les motifs qui commencent par un " !
" littéral , par exemple, " \!important!.txt
".
Exemple pour tout exclure sauf un répertoire spécifique foo/bar
(notez le /*
- sans la barre oblique, le caractère générique exclurait également tout ce qu'il contient foo/bar
):
--------------------------------------------------------------
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
--------------------------------------------------------------
Dans ton cas:
application/*
!application/**/
application/language/*
!application/language/**/
!application/language/gr/**
Vous devez d' abord mettre les dossiers en liste blanche avant de pouvoir mettre les fichiers en liste blanche dans un dossier donné.
Mise à jour février / mars 2016:
Notez qu'avec git 2.9.x / 2.10 (mi 2016?), Il pourrait être possible de ré-inclure un fichier si un répertoire parent de ce fichier est exclu s'il n'y a pas de caractère générique dans le chemin ré-inclus .
Nguyễn Thái Ngọc Duy ( pclouds
) tente d'ajouter cette fonctionnalité:
Donc, avec git 2.9+, cela aurait pu fonctionner, mais a finalement été inversé:
application/
!application/language/gr/
.gitignore
documentation sur le «format de modèle» soit devenue plus claire (décembre 2013). Voir ma réponse ci