Les trois fichiers d'ignore

Git lit les motifs d'exclusion depuis trois emplacements distincts, tous au même format que .gitignore. Le fichier .gitignore, placé à la racine ou dans n'importe quel sous‑répertoire, est versionné et donc partagé avec chaque clone du dépôt. Le second, .git/info/exclude, réside dans le répertoire .git du dépôt local ; il n'est jamais ajouté à l'historique et n'est visible que par la copie de travail concernée. Le troisième est le fichier global indiqué par la configuration core.excludesFile, généralement ~/.config/git/ignore (ou $XDG_CONFIG_HOME/git/ignore), appliqué à tous les dépôts de la machine.

Utilisation des fichiers .git/info/exclude et global

Les deux nouveaux fichiers sont de simples textes. On y ajoute des motifs exactement comme dans .gitignore. Exemple pour exclure un répertoire de plans personnels :

echo 'plans/' >> .git/info/exclude

et pour ignorer tous les fichiers Markdown de notes :

echo '*.notes.md' >> .git/info/exclude

Dans un environnement de worktree lié, .git devient un fichier pointant vers le répertoire partagé. Le chemin d’accès doit alors être résolu via git rev-parse --git-common-dir :

echo 'plans/' >> "$(git rev-parse --git-common-dir)/info/exclude"

Pour le fichier global, on crée le répertoire puis on ajoute les motifs :

mkdir -p ~/.config/git
echo '.DS_Store' >> ~/.config/git/ignore
echo '.idea/'   >> ~/.config/git/ignore

Git détecte automatiquement ce fichier s'il existe. Si l’on souhaite le placer ailleurs, il suffit de le déclarer :

git config --global core.excludesFile ~/.gitignore_global

Après l’ajout, git status ne répertorie plus les fichiers correspondants, à condition qu’ils n’aient jamais été suivis.

Contraintes et bonnes pratiques

Les règles d’exclusion ne s’appliquent jamais aux fichiers déjà suivis ; il faut donc les désindexer d’abord avec git rm --cached si nécessaire. Dans un worktree lié, le fichier .git/info/exclude reste unique au dépôt principal, ce qui évite la duplication mais impose de connaître la résolution du chemin partagé. Le fichier global, quant à lui, affecte chaque dépôt de la machine, ce qui est pratique pour filtrer les artefacts d’IDE (.idea/, .vscode/) ou les fichiers système (Thumbs.db, .DS_Store). Cependant, il ne doit pas contenir des motifs spécifiques à un projet, sous peine de masquer des fichiers utiles dans d’autres dépôts.

Intégration avec Claude Code

Claude Code, l’assistant de complétion de fichiers, ignore par défaut les chemins listés dans .git/info/exclude lorsqu’on utilise le raccourci @ pour insérer un fichier. Pour réactiver la visibilité, il suffit de désactiver le paramètre respectGitignore dans le fichier settings.json :

{ "respectGitignore": false }

Cette option n’influence que l’autocomplétion ; les fichiers restent accessibles en lecture par Claude Code. Ainsi, les développeurs peuvent séparer leurs notes privées du dépôt partagé tout en conservant la possibilité de les consulter via l’outil d’IA.