Git kennt drei Ebenen, um Dateien zu ignorieren, und die meisten Entwickler nutzen nur eine davon. Neben der bekannten .gitignore gibt es eine repo-lokale Ausschlussdatei und eine globale Ignore-Datei für den ganzen Rechner. Für Teams im Mittelstand löst das ein alltägliches Ärgernis: persönliche Dateien im Arbeitsverzeichnis, die niemanden sonst etwas angehen.
Die .gitignore landet im Repository und gilt für alle, die daran arbeiten. Genau das ist aber nicht immer gewünscht, etwa bei einer privaten Notizdatei oder bei Systemmüll wie .DS_Store auf dem Mac.
Das Wichtigste in Kürze
- Git ignoriert Dateien auf drei Ebenen:
.gitignore,.git/info/excludeund einer globalen Datei. - Die
.gitignorewird ins Repository eingecheckt und gilt für das gesamte Team. - Die Datei
.git/info/excludewirkt nur lokal pro Repository und wandert nicht in die Versionskontrolle. - Eine globale Ignore-Datei im Home-Verzeichnis greift maschinenweit über alle Repositories.
Wofür ist .git/info/exclude gut?

Die Datei .git/info/exclude liegt im .git-Verzeichnis jedes Repositories, ihre Änderungen wandern aber nicht in die Versionskontrolle. Damit eignet sie sich für Ausschlüsse, die nur den eigenen Arbeitsplatz betreffen. Eine persönliche notes.txt gehört genau hierher, wenn niemand sonst das Eintragen in die geteilte .gitignore braucht.
Der praktische Gewinn liegt in der Trennung. Was nur den eigenen Arbeitsfluss betrifft, verschmutzt nicht die geteilte Konfiguration des Teams. Andere Mitwirkende sehen die persönlichen Ausschlüsse gar nicht erst.
Wie funktioniert die globale Ignore-Datei?

Die Datei unter ~/.config/git/ignore wirkt für jedes Repository auf dem Rechner, ohne an ein einzelnes Projekt gebunden zu sein. Wer auf macOS arbeitet, trägt hier sinnvollerweise .DS_Store ein, damit dieser Systemmüll in keinem Projekt mehr auftaucht. Der Pfad lässt sich frei wählen, etwa auf ~/.gitignore_global, über das Kommando git config --global core.excludesFile ~/.gitignore_global.
Zur Standardeinstellung kehrt man mit git config --global --unset core.excludesFile zurück. Welche der drei Ebenen eine konkrete Datei ausschließt, verrät der Befehl git check-ignore -v, der Pfad, Zeilennummer und Regel ausgibt.
Wer jahrelang nur die .gitignore kennt, schleppt persönliche Ausschlüsse durch jedes Team-Repository. Drei Ebenen sauber zu trennen, ist kein Detail, sondern Hygiene im täglichen Workflow.
— Markus Seyfferth, Chefredakteur Dr. Web
Was heißt das für die Praxis?

Die Faustregel ergibt sich aus der Reichweite. Was alle im Team brauchen, gehört in die .gitignore. Was nur dieses eine Repository auf dem eigenen Rechner betrifft, kommt in .git/info/exclude. Was auf der ganzen Maschine überall ignoriert werden soll, landet in der globalen Datei.
Prüfen Sie bei Gelegenheit Ihre bestehende .gitignore auf Einträge, die eigentlich persönlich sind, und verschieben Sie diese auf die passende Ebene. Wer die wichtigsten Werkzeuge der Webentwicklung sortiert haben will, findet in unserer Übersicht zu den kostenlosen Ressourcen für Webentwickler einen guten Startpunkt. Die drei Ebenen erklärt der Entwickler Nelson Figueroa ausführlich in seinem Originalbeitrag.