Jeder Entwickler hat es mindestens einmal erlebt: Eine .DS_Store-Datei, ein .idea/-Ordner oder ein anderes maschinenspezifisches Artefakt landet versehentlich in einem gemeinsam genutzten Repository. Eine projektbezogene .gitignore hilft, aber du musst sie in jedem Repo wiederholen. Die Lösung ist eine globale .gitignore – eine einzige Datei, die Git auf jedes Repository auf deinem Rechner anwendet.
Wie Git entscheidet, was ignoriert wird
Git wertet Ignore-Regeln aus drei Quellen in der Reihenfolge ihrer Spezifität aus:
.gitignore-Dateien innerhalb des Repositories (eingecheckt, mit dem Team geteilt).git/info/excludeinnerhalb des Repositories (lokal, nicht eingecheckt)- Die Datei, auf die
core.excludesFilein deiner globalen Git-Konfiguration verweist (gilt für jedes Repo auf dem Rechner)
Die globale Exclude-Datei ist der richtige Ort für Regeln, die spezifisch für dein Gerät oder dein Toolchain sind, nicht für ein Projekt. Die vollständige Auflösungsreihenfolge findest du in der offiziellen gitignore-Dokumentation.
Schritt 1 — Datei erstellen
Per Konvention heißt die Datei .gitignore_global und liegt im Home-Verzeichnis, aber du kannst sie überall ablegen und beliebig benennen.
Linux / macOS:
touch ~/.gitignore_global
Windows (PowerShell):
New-Item -ItemType File -Path "$env:USERPROFILE\.gitignore_global"

Schritt 2 — Git darüber informieren
Registriere die Datei bei Git über den Konfigurationsschlüssel core.excludesFile.
Linux / macOS:
git config --global core.excludesFile ~/.gitignore_global
Windows (PowerShell):
git config --global core.excludesFile "$env:USERPROFILE\.gitignore_global"
Damit wird eine Zeile in ~/.gitconfig (Linux/macOS) bzw. %USERPROFILE%\.gitconfig (Windows) geschrieben:
[core]
excludesFile = /home/you/.gitignore_global
Du kannst prüfen, ob der Wert korrekt gesetzt wurde:
git config --global core.excludesFile
git config --global core.excludesFile
Beide Befehle sollten den gesetzten Pfad ausgeben.
Schritt 3 — Datei befüllen
Hier gehört alles rein, was von deinem Betriebssystem, Editor oder Toolchain erzeugt wird – nicht vom Projekt selbst.
Ein praktischer Ausgangspunkt:
# macOS
.DS_Store
.AppleDouble
.LSOverride
# Windows
Thumbs.db
ehthumbs.db
desktop.ini
# Linux
*~
.nfs*
# Vim / Neovim
*.swp
*.swo
Session.vim
# Emacs
\#*\#
.\#*
# direnv
.envrc
# mise / asdf Versionsmanager
.tool-versions
.mise.toml
Regeln verwenden dieselbe Glob-Syntax wie eine normale .gitignore. Leerzeilen und Zeilen, die mit # beginnen, werden ignoriert.
Regeln automatisch generieren
Diese Liste manuell zu pflegen wird mühsam. gitignore.io (auch per API erreichbar) generiert maßgeschneiderte Ignore-Regeln für beliebige Kombinationen aus Betriebssystemen, Editoren und Sprachen. Um beispielsweise Regeln für macOS + Windows + JetBrains + Go im Terminal zu erhalten:
Linux / macOS:
curl -sL "https://www.toptal.com/developers/gitignore/api/macos,windows,jetbrains+all,go" \
>> ~/.gitignore_global
Windows (PowerShell):
Invoke-WebRequest -Uri "https://www.toptal.com/developers/gitignore/api/windows,jetbrains+all,go" `
-UseBasicParsing | Select-Object -ExpandProperty Content `
| Add-Content -Path "$env:USERPROFILE\.gitignore_global"
Das GitHub-Team pflegt außerdem eine kuratierte Sammlung von Templates unter github/gitignore. Jede Datei dort deckt eine Sprache oder ein Tool ab und ist eine zuverlässige Referenz.
Funktionsweise prüfen
Erstelle eine temporäre Datei, die einer Regel entspricht, und bestätige, dass Git sie ignoriert:
Linux / macOS:
cd /tmp && git init test-repo && cd test-repo
touch .DS_Store
git status
Windows (PowerShell):
$null = New-Item -ItemType Directory -Path "$env:TEMP\test-repo"; cd "$env:TEMP\test-repo"
git init
New-Item -ItemType File -Path "Thumbs.db"
git status
git status sollte einen sauberen Working Tree melden – die Datei ist für Git unsichtbar.

Hinweise
- Regeln sind additiv, nicht überschreibend. Ein Muster in
.gitignore_globalüberschreibt keine!Negationin der.gitignoreeines Projekts. Die spezifischste passende Regel gewinnt. - Bereits getrackte Dateien sind nicht betroffen. Wenn eine Datei bereits in ein Repository eingecheckt ist, bewirkt das Hinzufügen zur
.gitignore(auch zur globalen) kein Untracking. Dazu ist zuerstgit rm --cached <datei>nötig. - Teammitglieder benötigen ihre eigene Einrichtung. Die globale Exclude-Datei ist rein lokal; sie wird nie eingecheckt. Wenn ein Muster für alle im Projekt gelten soll, gehört es in die projektbezogene
.gitignore.
Fazit
Eine globale .gitignore ist eine einmalige Einrichtung, die stillschweigend eine ganze Klasse von versehentlichen Commits in jedem Repository auf deinem Rechner verhindert. Einmal einrichten, fokussiert auf Geräte- und Tool-spezifische Artefakte halten, und projektspezifische Regeln der Repository-eigenen .gitignore überlassen.
