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 motif ; tout fichier correspondant exclu par un motif 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 liste pas les répertoires exclus pour des raisons de performance, donc les motifs sur les fichiers contenus n'ont aucun effet, peu importe où ils sont définis.
Mettez un backslash (" \
") devant le premier " !
"pour les modèles qui commencent par un " !
", par exemple, " \!important!.txt
".
Exemple pour exclure tout sauf un répertoire spécifique foo/bar
(notez le /*
- sans la barre oblique, le caractère générique exclurait également tout ce qui se trouve à l'intérieur de foo/bar
):
--------------------------------------------------------------
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
--------------------------------------------------------------
Dans votre cas :
application/*
!application/**/
application/language/*
!application/language/**/
!application/language/gr/**
Vous devez mettre sur liste blanche dossiers avant de pouvoir mettre sur liste blanche les fichiers d'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 joker dans le chemin réinclus .
Nguyen Thái Ngoc Duy ( pclouds
) essaie d'ajouter cette fonctionnalité :
Ainsi, avec git 2.9+, cela aurait pu fonctionner, mais a finalement été annulé :
application/
!application/language/gr/
1 votes
Espérons que le "
.gitignore
La documentation sur le "format de motif" vient d'être clarifiée (décembre 2013). Voir ma réponse ci-dessous1 votes
Ma question et réponse préférée, ajoutée aux favoris ainsi qu'aux signets du navigateur.
2 votes
Voir aussi Comment puis-je dire à Git d'ignorer tout sauf un sous-répertoire ?
0 votes
Jetez d'abord un coup d'œil à la réponse de Steve Klings.