update Unignore les sous-répertoires des répertoires ignorés dans Git




git update tag (3)

Même si vous ajoutez quelque chose à .gitignore , vous pouvez forcer git à l'ajouter à l'index

git add --force uploads/rubbish/stuff/KEEP_ME/

Cependant, "KEEP_ME" semble être un répertoire et git ne ressemble généralement pas au dossier vide. Vous devriez donc pouvoir ajouter un fichier de détenteur "espace réservé" à la place, si le dossier est vide.

git add --force uploads/rubbish/stuff/KEEP_ME/.keep_me

Supposons que j'ai ignoré un répertoire, mais que je souhaite y annuler la création de sous-répertoires spécifiques. J'ai donc la configuration:

/uploads/
/uploads/rubbish/
/uploads/rubbish/stuff/KEEP_ME/
/uploads/foo/
/uploads/foo/bar/lose/

Et je veux tout ignorer sauf le répertoire KEEP_ME . J'espère que l'ignorer ressemblerait à quelque chose comme:

/uploads/*
!/uploads/rubbish/stuff/KEEP_ME/

Mais cela ne fonctionne pas et il n’ya pas non plus plusieurs permutations sur le même thème.

Celui qui fonctionne est

/uploads/**/**/**/
!/uploads/rubbish/stuff/KEEP_ME/

Mais cela semble un peu restrictif et prolixe?


A essayé de comprendre comment inclure un dossier spécifique lors de l'exclusion de tous les dossiers avec l'exclusion générique

**/build

si vous ajoutez le /* à la fin de votre exclusion générique, vous continuez à exclure tous les fichiers de construction **/build/*

Ensuite, vous ajoutez une autre ligne pour corriger le chemin que vous voulez inclure, pour ressembler à

!**/folder/build/* 

nous laissant un gitignore qui lit

**/build/* 
!**/folder/build/* 

Selon la section de format de modèle de la documentation de gitignore :

Un préfixe optionnel "!" qui nie le motif; 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. Git ne répertorie pas les répertoires exclus pour des raisons de performance. Par conséquent, les modèles de fichiers contenus n'ont aucun effet, peu importe où ils sont définis. Mettez une barre oblique inverse ("\") devant le premier "!" pour les motifs commençant par un "!" littéral, par exemple, "! important! .txt".

Par conséquent, le répertoire parent précédemment exclu /uploads/rubbish/stuff/keep/ pattern doit être exclusivement annulé avant que son contenu ne soit annulé:

#ignore everything within /uploads/ 
/uploads/*

#include everything within /uploads/rubbish/stuff/keep
!/uploads/rubbish/stuff/keep/  
!/uploads/rubbish/stuff/keep/*

Pour inclure des sous-répertoires dans /uploads/rubbish/stuff/keep/ add la troisième ligne:

!/uploads/rubbish/stuff/keep/**/*




gitignore