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:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

Back to Top