Exclude : le fichier secret de Git que tu n’as jamais vu
Tu connais sûrement le fichier .gitignore
: indispensable pour garder ton dépôt propre.
Mais Git garde aussi un petit carnet secret, planqué dans .git/info/
.
Son nom ? exclude. Un fichier que presque personne n’a jamais ouvert… et pourtant, il peut te sauver la vie.
⚡️ Résumé express
.gitignore
→ partagé, versionné, officielexclude
→ local, perso, jamais partagé
Les deux servent à dire à Git : "ne me propose pas ces fichiers dans mes git add
".
📚 Pour ceux qui aiment lire la doc officielle
🧩 .gitignore : l'indispensable qu'on connaît tous
Avant de révéler le secret, petit rappel sur .gitignore
.
Dans un projet tout n’a pas vocation à finir dans l’historique Git et à être publié sur un serveur comme Github :
- Les
node_modules
→ trop lourds, on les réinstalle avecnpm install
- Les fichiers sensibles comme
.env
→ sécurité oblige, on n'a pas envie de voir ses clés API se balader sur Github - Les fichiers générés (logs, caches, dossiers build/) → polluants et sans valeur historique
- Les fichiers parasites créés par ton OS totalement inutiles pour ton projet:
.DS_Store
sur macOS,Thumbs.db
sur Windows- ...
C’est là que .gitignore
entre en scène : il agit comme une liste noire: Tout ce que tu y écris n’apparaîtra plus
dans ton git status
ni dans tes git add
.
Et le meilleur ? Comme .gitignore
est versionné et partagé avec l’équipe :
- tout le monde suit les mêmes règles,
- et tu évites qu’un collègue un peu distrait balance les secrets de prod dans un commit public. (Oui, ça arrive. Oui, ça pique 😅).
Bref, .gitignore c’est l’ange gardien de ton dépôt. Simple, efficace, indispensable.
✅ Syntaxe rapide (pour les pressés)
Syntaxe | Exemple | Effet |
---|---|---|
fichier.txt | config.log | Ignore ce fichier exact et uniquement ce fichier |
*.ext | *.log | Ignore tous les fichiers qui terminent par .log |
dossier/ | node_modules/ | Ignore tout le dossier |
**/pattern | **/cache | Ignore tous les dossier "cache" et ce qu'ils contiennent |
📂 Exemple concret
BASH# Exemple de structure de projet mon-projet/ ├── .gitignore ├── src/ ├── node_modules/ ← ignoré ├── build/ ← ignoré └── .env ← ignoré
Et le fichier .gitignore :
BASHnode_modules/ build/ .env *.log
😬 Quand .gitignore devient ton ennemi
Sa force devient aussi son plus gros défaut : il est partagé.
Imagine la scène: Tu veux juste garder ton dépôt propre pour toi. Alors tu penses à ignorer:
- Tes notes persos sur le projet (mes-notes.md)
- Tes configs d'IDE (
.vscode/
,.cursor/
, ...) - Tes scripts de debug persos (
debug-api.sh
) - Tes collections Postman (
mes-tests-api.json
) - Ton
.env.local
(même si l'équipe partage.env
)
Logique, non ?
Sauf que… dès que tu touches à .gitignore, BOOM 💥 ! Toute l’équipe hérite de tes préférences persos.
Et là, c’est la galère :
- Tes collègues te tombent dessus parce que tu as "cassé" leur IDE préféré
- Tes fichiers persos continuent à polluer ton
git status
- Tu as l’impression d’être coincé entre deux mondes :
- “propre pour toi”
- “propre pour l’équipe”
Frustrant. Et tu te demandes : Git n’a vraiment rien prévu pour ça ?
🕵️ Plot twist : Git avait tout prévu depuis le début
Spoiler : Git a une solution. Mais elle est planquée plus profondément qu’un easter egg dans un vieux jeu vidéo.
Au fond des entrailles de ton dépôt, dans le dossier .git/info/
, dort un fichier oublié : exclude.
- Pas de doc claire qui en parle
- Pas de tuto YouTube qui cartonne
- Même Stack Overflow l’a presque passé sous silence
Et pourtant… ce fichier fait pile ce que tu attends :
👉 ignorer des fichiers, mais uniquement pour toi.
👻 Le fichier fantôme : .git/info/exclude
BASH# Il existe déjà, mais quasiment vide, # juste quelques commentaires pour un projet C, rien de plus ❯ cat .git/info/exclude # git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~
Son comportement ? Identique à .gitignore
:
- Même syntaxe
- Même logique d'exclusion
- Mais avec une différence cruciale :
- jamais versionné, jamais partagé
👉 Un vrai fichier fantôme, invisible pour ton équipe… et parfait pour ton usage perso.
📂 Exemple concret
Tu bosses sur un projet React en équipe :
BASH# Ajoute tes exclusions persos echo "# Mes fichiers persos" >> .git/info/exclude echo "mes-notes.md" >> .git/info/exclude echo ".vscode/" >> .git/info/exclude echo "debug-*.sh" >> .git/info/exclude echo ".env.local" >> .git/info/exclude echo "postman-perso.json" >> .git/info/exclude
Résultat magique : git status
ne te propose plus jamais ces fichiers. Et personne d'autre n'en saura rien.
🔄 Avant / Après
Avant :
BASHgit status # modified: mes-notes.md # untracked: debug-api.sh # untracked: .vscode/ # untracked: .env.local
Après :
BASHgit status # On branch main # nothing to commit, working tree clean
Clean. Zen. Parfait.
🚀 Le combo gagnant
La vérité, c’est que Git avait tout prévu. Et quand tu combines .gitignore
et exclude
, tu tiens une stratégie pro :
.gitignore
→ tout ce qui concerne le projet (node_modules, build, .env).exclude
→ tout ce qui ne concerne que toi (notes perso, config IDE, scripts de debug, Postman local…).
Ton dépôt reste propre et cohérent pour l’équipe.
Ton espace de travail reste libre et zen pour toi.
👉 Le combo gagnant.
.git/info/exclude
, c’est comme la pièce secrète derrière une bibliothèque : invisible au premier coup d’œil, mais une
fois que tu sais… tu ne peux plus t’en passer.
Il résout un problème que tous les devs rencontrent, mais que presque personne ne sait résoudre proprement.
Et ça ? C’était juste l’échauffement. Dans ma formation Maître Git, on ouvre toutes les trappes cachées, et je te montre comment exploiter Git bien au-delà de ce que tu croyais possible.
❓ FAQ Express
Quelle différence entre exclude
et .gitignore
?
.gitignore
est partagé avec l’équipe, exclude
reste local, uniquement pour toi.
Est-ce que je peux versionner exclude
?
Non, jamais. Git protège ce fichier : impossible de l’ajouter à l’index, même par erreur.
Et si je clone le projet ailleurs ?
Tu repars avec un exclude
vide. Ce fichier est propre à chaque dépôt local.
Ça marche avec tous les outils Git ?
Oui, c’est une mécanique interne de Git. Que tu sois sur VS Code, IntelliJ, ou même en ligne de commande, exclude
fonctionne partout.
🚀 Va plus loin : Maîtrise Git en entreprise avec nos formations sur mesure
Pourquoi choisir la formation "Maître Git" pour ton entreprise ?
- Expertise certifiée: Bénéficie de l'expérience d'un formateur spécialisé, capable de démystifier Git pour tous les niveaux.
- Programmes sur mesure: Chaque formation est adaptée à la culture de ton entreprise, à tes outils et à tes workflows spécifiques.
- Productivité accrue: Des équipes formées à l'excellence Git travaillent plus vite, avec moins d'erreurs et une meilleure collaboration.
- Sécurité renforcée: Apprends les bonnes pratiques pour protéger ton historique de code et éviter les pièges courants.
Prêt à transformer la gestion de version de ton entreprise ?
Ne laisse plus les complexités de Git freiner tes projets. Investis dans la compétence de tes équipes et assure une collaboration fluide et efficace.