Des règles d'exclusion personnelles avec .git/info/exclude
Comment écrire dans .git/info/exclude des règles personnelles propres à un seul dépôt sans modifier le .gitignore, dans quels cas c'est utile et quelle est sa priorité.
Le .gitignore est commité et partagé avec tout le monde. Il arrive pourtant que vous vouliez ignorer des fichiers seulement pour vous et seulement dans ce dépôt : notes personnelles, scripts d'essai, dossiers créés par les extensions de votre éditeur. C'est à cela que sert .git/info/exclude.
Où se trouve-t-il
git init ou git clone crée automatiquement le fichier .git/info/exclude. C'est un fichier vide qui ne contient que quelques lignes de commentaire.
cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# ...
Comme il se trouve dans le répertoire .git, il n'est pas commité et n'est transmis à personne lors d'un push. Sa syntaxe est exactement celle du .gitignore. Pour connaître son emplacement exact, y compris avec plusieurs worktrees, utilisez git rev-parse --git-path info/exclude.
Quand l'utiliser
| Situation | Exemples | Emplacement conseillé |
|---|---|---|
| Fichiers personnels utilisés seulement dans ce dépôt | notes.md, scratch/, todo.txt | .git/info/exclude |
| Fichiers personnels communs à tous les dépôts | .DS_Store, *.swp | gitignore global |
| Règles nécessaires à toute l'équipe | node_modules/, dist/, .env | .gitignore |
C'est particulièrement utile quand vous contribuez au dépôt de quelqu'un d'autre. Si vous modifiez le .gitignore du projet pour bloquer les fichiers créés par vos outils, les relecteurs risquent de refuser ce changement. En écrivant dans .git/info/exclude, vous ne touchez pas à l'historique des commits.
echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status # ils n'apparaissent plus
Priorité
Parmi les sources de règles, .git/info/exclude est en dessous du .gitignore et au-dessus du fichier global.
- Motifs de la ligne de commande
.gitignore(les fichiers des sous-répertoires priment sur ceux du dessus).git/info/excludecore.excludesFile
On ne peut donc pas réinclure, avec une règle ! dans .git/info/exclude, un fichier que le .gitignore ignore. Vérification :
# .gitignore : x
# .git/info/exclude : !x
$ git check-ignore -v x
.gitignore:1:x x
Points d'attention
- Sans effet sur les fichiers déjà suivis. Comme pour le .gitignore, les règles d'exclusion ne s'appliquent qu'aux fichiers non suivis.
- Un nouveau clone remet ce fichier à son état par défaut. Si vous avez besoin des mêmes règles sur plusieurs ordinateurs, le gitignore global est plus adapté.
- Si vous copiez le dépôt dans un dossier partagé avec son répertoire
.git, les règles suivent.
Références
- Documentation officielle de gitignore : $GIT_DIR/info/exclude
- GitHub Docs : Excluding local files without creating a .gitignore file
- Vérifié le : 2026-09-23 (exemple de priorité contrôlé avec git 2.50.1)