Guide de syntaxe et règles pour .gitignore
Analyse technique détaillée des motifs glob, de la syntaxe des barres obliques, des règles de négation et du piège des répertoires exclus.
Chaque ligne d'un fichier .gitignore définit un motif d'exclusion autonome selon trois règles fondamentales :
- Les lignes vides sont ignorées et servent de séparateurs visuels pour aérer le fichier.
- Les lignes débutant par # sont des commentaires sans influence sur le suivi de version.
- Les espaces en fin de ligne sont ignorés sauf s'ils sont protégés par une barre oblique inverse (\ ).
# Ignore compiled Python bytecode
__pycache__/
*.py[cod]
# Ignore local secret configurations
.env
.env.localGit prend en charge les caractères génériques Unix glob au sein d'un même niveau de dossier :
- * (Astérisque) : Correspond à zéro ou plusieurs caractères dans un même segment de chemin. *.log cible error.log, mais pas sous-dossier/error.log.
- ? (Point d'interrogation) : Correspond exactement à un seul caractère. test?.js cible test1.js, mais pas test12.js.
- [abc] (Plage de caractères) : Correspond à n'importe quel caractère entre crochets. *.[oa] cible les fichiers .o ou .a.
L'emplacement d'une barre oblique (/) modifie complètement l'interprétation du motif par Git :
- Barre oblique finale (logs/) : Restreint le motif uniquement aux répertoires. Le dossier logs/ sera ignoré, mais un fichier standard nommé logs ne le sera pas.
- Barre oblique initiale (/config.json) : Ancre la règle au niveau racine contenant le fichier .gitignore. Isole /config.json tout en permettant de suivre /sub/config.json.
- Barre oblique médiane (docs/*.html) : Ancre également le motif de manière relative au dossier contenant le fichier .gitignore.
Le double astérisque permet des correspondances à travers plusieurs niveaux d'arborescence :
- **/cache : Correspond à tout dossier ou fichier nommé cache n'importe où dans le dépôt (cache, src/cache, a/b/c/cache).
- logs/** : Correspond à tous les fichiers et sous-dossiers situés dans logs/, peu importe la profondeur.
- a/**/b : Correspond à a/b, a/x/b, a/x/y/b, etc.
Un point d'exclamation (!) en début de ligne annule une exclusion précédente pour réinclure un fichier.
Pour des raisons de performance, Git n'examine jamais le contenu d'un dossier exclu. Si build/ est ignoré, Git ne réinclura JAMAIS un fichier intérieur avec !build/important.txt.
Pour réinclure un élément situé dans un dossier exclu, vous devez ignorer le contenu du dossier plutôt que le dossier lui-même :
# INCORRECT: Will NOT work because parent directory is skipped
node_modules/
!node_modules/my-local-package
# CORRECT: Ignore contents of directory, then whitelist the specific target
node_modules/*
!node_modules/my-local-package/Pour vérifier quelle règle précise s'applique à un fichier donné, utilisez la commande Git dédiée avec l'option -v :
# Shows the exact .gitignore file and line number responsible
git check-ignore -v src/temp/debug.logQuestions fréquentes
Réponses aux questions courantes sur les règles .gitignore, la gestion du cache et du dépôt.
Quelle est la différence entre * et ** dans un .gitignore ?
L'astérisque simple (*) correspond aux caractères au sein d'un même dossier. Le double astérisque (**) permet de traverser plusieurs sous-dossiers arbitraires.
Pourquoi !dossier/fichier.txt ne fonctionne pas si dossier/ est ignoré ?
Git cesse de parcourir un dossier dès qu'il est ignoré. Pour réinclure un fichier, ignorez le contenu avec 'dossier/*' puis déclarez l'exception.
Comment identifier quelle règle ignore un fichier ?
Exécutez 'git check-ignore -v <chemin>'. Git affichera le fichier .gitignore exact et la ligne responsable de l'exclusion.
Guides et Références .gitignore
Comment ignorer des fichiers déjà suivis dans Git
La solution au problème classique dans Git : retirer de l'index des fichiers sensibles ou générés qui avaient été accidentellement commités avant l'ajout du .gitignore.
Comment ignorer un répertoire dans Git
Explication claire des règles pour ignorer des répertoires : comportement de la barre oblique finale, dossiers relatifs à la racine, sous-dossiers et conservation de répertoires vides.
Exemples de .gitignore pour les stacks modernes
Exemples pratiques et sélectionnés de fichiers .gitignore pour langages populaires, frameworks backend, jeux vidéo, applications mobiles et conteneurs.