1. Ignorer une extension dans le projet
Dans le .gitignore racine, ce motif correspond à app.log, logs/app.log et src/app.log. * représente zéro ou plusieurs caractères sauf / ; sans barre, Git compare les noms à toute profondeur sous ce .gitignore.
Écrivez un motif par ligne. Il s’agit de motifs Git, pas de commandes shell ni d’expressions régulières : *.{log,tmp} ne représente pas une liste d’extensions.
*.log 2. Limiter le motif à un dossier
La première variante correspond à logs/app.log mais pas à logs/archive/app.log. La seconde correspond aux deux : /**/ accepte zéro ou plusieurs dossiers intermédiaires. Aucune ne correspond à src/app.log.
Testez une seule variante à la fois. Une règle comme /logs/ peut déjà cacher les fichiers imbriqués en excluant le parent ; vérifiez les autres règles avant de conclure.
/logs/*.log/logs/**/*.log 3. Tester des chemins représentatifs
Choisissez une règle, créez les trois fichiers non suivis, puis examinez les correspondances :
git check-ignore -v -- logs/app.log logs/archive/app.log src/app.logAvec /logs/**/*.log, les deux chemins sous logs doivent correspondre, mais pas src/app.log. Un motif commençant par ! est une exception ; ses dossiers parents doivent rester accessibles.
Pourquoi ! ne conserve-t-il pas un fichier dans un dossier ignoré ?
Pour le comportement exact et davantage de détails, consultez les références officielles : Documentation Git · Documentation git check-ignore