web-dev-qa-db-fra.com

Liste blanche et sous-répertoires dans Git

J'ai créé une liste blanche pour les fichiers texte uniquement.

*
!*.txt

Maintenant, j'ai un fichier texte non suivi dans un sous-répertoire - sub/dir/file.txt, et ceci N'EST PAS affiché (il est ignoré). Les fichiers texte dans le répertoire racine sont cependant affichés.

Pourquoi est-ce et comment le résoudre?

76
Nate

Si vous l'essayez de cette façon, cela échouera, car vous finirez par mettre sur liste noire les répertoires de votre structure.

Pour résoudre, vous voulez mettre sur liste noire tout ce qui n'est pas un répertoire et ne fait pas partie des types de fichiers que vous souhaitez valider tout en ne mettant pas sur liste noire les répertoires .

Le .gitignore fichier qui fera cela:

# First, ignore everything
*
# Now, whitelist anything that's a directory
!*/
# And all the file types you're interested in.
!*.one
!*.two
!*.etc

Testé dans une liste blanche de structure à trois niveaux pour .txt fichiers en présence de *.one, *.two et *.three fichiers utilisant un .gitignore situé dans le répertoire racine du référentiel - fonctionne pour moi. Vous n'aurez pas à ajouter .gitignore fichiers vers tous les répertoires de votre structure.

Les informations que j'ai utilisées pour comprendre la réponse provenaient, entre autres, de this (stackoverflow.com).

121
simont