Manchmal möchte man Dateien von Git ignorieren lassen, die aber nicht in der .gitignore auftauchen sollen. Vielleicht handelt es sich um persönliche Konfigurationsdateien, lokale Notizen oder IDE-spezifische Ordner, die nur dich betreffen und nicht das gesamte Team.
Die Lösung: .git/info/exclude
Was ist .git/info/exclude?
Diese Datei funktioniert genau wie .gitignore, wird aber nicht ins Repository committed und bleibt lokal auf deinem Rechner. Jedes Git-Repository hat diese Datei bereits – du musst sie nur mit Einträgen füllen.
| Datei | Zweck |
|---|---|
.gitignore |
Ausschlüsse, die für alle Entwickler gelten (wird committed) |
.git/info/exclude |
Persönliche/lokale Ausschlüsse nur für dich |
~/.config/git/ignore |
Globale Ausschlüsse für alle deine Repositories |
Praktische Git-Aliases für den Alltag
Um die Arbeit mit lokalen Excludes zu vereinfachen, habe ich mir einige Git-Aliases erstellt, die ich hier teilen möchte.
1. Dateien zum Exclude hinzufügen
git config --global alias.exclude '!f() { echo "$1" >> .git/info/exclude; }; f'
Verwendung:
git exclude "meine-lokale-datei.txt"
git exclude "tmp/"
git exclude "*.local"
2. Alle Exclude-Einträge anzeigen
git config --global alias.excluded '!grep -v "^#" .git/info/exclude | grep -v "^$"'
Verwendung:
git excluded
Dieser Befehl zeigt alle Einträge aus .git/info/exclude an und filtert dabei Kommentare und Leerzeilen heraus.
3. Betroffene Dateien auflisten
git config --global alias.excluded-files '!git ls-files -o --ignored --exclude-from=.git/info/exclude'
Verwendung:
git excluded-files
Zeigt alle ungetrackten Dateien, die durch .git/info/exclude ignoriert werden.
4. Bonus: Alle ignorierten Dateien anzeigen
Falls du alle ignorierten Dateien sehen willst – aus .gitignore, .git/info/exclude und der globalen Ignore-Datei kombiniert:
git config --global alias.ignored '!git ls-files -o --ignored --exclude-standard'
Verwendung:
git ignored
Hinweis zu Git-Aliases mit Argumenten
Bei der Erstellung des exclude-Aliases bin ich auf eine Besonderheit gestoßen: Git hängt Argumente automatisch ans Ende eines Aliases an. Verwendet man zusätzlich $1, erscheint das Argument doppelt.
Die Lösung ist das Wrapping in eine Shell-Funktion:
# Falsch – Argument erscheint doppelt:
git config --global alias.exclude '!echo "$1" >> .git/info/exclude'
# Richtig – Funktion verhindert das Problem:
git config --global alias.exclude '!f() { echo "$1" >> .git/info/exclude; }; f'
Fazit
Mit diesen einfachen Aliases wird die Arbeit mit lokalen Git-Excludes zum Kinderspiel. Du kannst Dateien schnell ausschließen, dir einen Überblick verschaffen und behältst die Kontrolle darüber, was in deinem Repository getrackt wird – ohne die .gitignore für alle anderen zu verändern.
Diese Artikel könnten dich auch interessieren:
- Git-Tipp: So richtest du eine globale `.gitignore`-Datei ein
- Eine smarte ZSH-Funktion: cat für Dateien und URLs
- Schneller Verbinden – SSH Config Tricks
- Integration eines externen Git Repos in ein Unterverzeichnis mit Erhalt der vollständigen Historie
- PHP Scripte regelmäßig per cronjob ausführen lassen

