Von Gast (nicht überprüft) , 29 April 2026

Einführung

git log durchläuft den Commit-Graphen von einem Startpunkt aus (Standard: HEAD) rückwärts durch die Eltern und gibt jeden Commit aus. Es ist das primäre Werkzeug zur Erkundung der Projekthistorie.

Grundlegende Verwendung

git log
git log --oneline
git log --oneline --graph --decorate --all

Die letzte Form ist die Schweizer-Taschenmesser-Ansicht: ein kompakter Graph jedes Branches mit dekorierten Refs.

Filtern nach Datum, Autor, Nachricht

git log --since="2 weeks ago"
git log --until=2025-01-01
git log --author="Ada"
git log --grep="bugfix"
git log -S "deprecated_function"   # Pickaxe: wann erschien ein String?

-S ist unschätzbar für Code-Archäologie: Es findet Commits, die die Anzahl der Vorkommen eines Strings in irgendeiner Datei verändern.

Diffs anzeigen

git log -p                 # vollständiger Patch pro Commit
git log --stat             # geänderte Dateien plus +/- Zählungen
git log --shortstat        # nur Zusammenfassungszeile
git log -p -- path/to/file # nur Commits, die einen Pfad berühren

Eigene Formate

--pretty=format: akzeptiert Platzhalter. Ein nützlicher Einzeiler:

git log --pretty=format:"%h %an %ad %s" --date=short

%h abgekürzter Hash, %an Autorenname, %ad Autorendatum, %s Betreff. Die vollständige Liste finden Sie unter git help log.

Limits und Bereiche

git log -n 5                       # letzte 5 Commits
git log main..feature              # Commits auf feature, nicht auf main
git log main...feature             # symmetrische Differenz
git log feature ^main              # gleichbedeutend mit main..feature

Datei-Umbenennungen folgen

Git zeichnet Umbenennungen nicht auf, es erkennt sie. Um der Historie über eine Umbenennung hinweg zu folgen:

git log --follow -- path/to/file

Nützliche Aliase

Eine Handvoll git log-Aliase rentiert sich in der ersten Woche. Zwei besonders gute:

git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.last "log -1 HEAD --stat"
git config --global alias.recent "log --since='2 weeks ago' --author=$(git config user.email)"

git lg liefert den Vogelperspektivgraphen; git last zeigt, was gerade passiert ist; git recent beantwortet "Woran habe ich in letzter Zeit gearbeitet?". Fügen Sie für jeden Log-Aufruf, den Sie mehr als zweimal eintippen, einen Alias hinzu.

Umkehren und begrenzen

Standardmäßig läuft git log von neu nach alt. Manchmal (Release Notes, Code-Archäologie) wollen Sie das Gegenteil, gepaart mit einem sauberen Format:

git log --reverse --oneline v1.0.0..v1.1.0
git log --reverse --pretty=format:"* %s (%h)" v1.0.0..HEAD > CHANGELOG.draft

Hier zahlen sich Pickaxe und Pfadfilter aus: git log --reverse -S "old_api" -- src/ zeigt die chronologische Historie des Erscheinens und Verschwindens eines Strings, ideal zum Verfolgen von Deprecations.

Häufige Fehler

Nur die Historie von HEAD lesen und Commits auf anderen Branches verpassen; übergeben Sie --all, um sie zu sehen. --author (eine Regex auf das Autorenfeld) mit einem literalen Exakt-Match verwechseln; setzen Sie das Muster sorgfältig in Anführungszeichen. git log file statt git log -- file verwenden: Der ---Trenner macht Pfade von Refs unterscheidbar, besonders wenn ein Branch und eine Datei einen Namen teilen. Schließlich: Erwarten, dass git log gelöschte Commits nach einem Force-Reset zeigt; verwenden Sie dafür git reflog. git log läuft nur erreichbare Historie ab.