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 du répertoire racine sont toutefois affichés.

Pourquoi est-ce, et comment puis-je le réparer?

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

Pour résoudre ce problème, vous devez mettre en liste noire tout ce qui n’est pas un répertoire, et ne fait pas partie des types de fichiers que vous souhaitez valider, sans mettre les répertoires en liste noire .

Le fichier .gitignore qui fera ceci:

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

J’ai testé ceci dans une structure à trois niveaux: liste blanche pour les fichiers .txt en présence de *.one , *.two et *.three en utilisant un .gitignore situé dans le répertoire racine du référentiel – fonctionne pour moi. Vous n’aurez pas à append de fichiers .gitignore à tous les répertoires de votre structure.

Les informations que j’ai utilisées pour trouver la réponse provenaient, entre autres, de ceci (stackoverflow.com).