git log
Informationen zum git log-Befehl, seinen Optionen und Beispielen zur Filterung und Analyse der Projekthistorie.

Der Befehl git log ist Ihr Fenster in die Geschichte eines Projekts. Er listet die Commits auf, die im Repository aufgezeichnet wurden – die neuesten zuerst – und bietet eine Vielzahl von Optionen zum Filtern, Suchen und Neuformatieren dieser Historie. Diese Seite erklärt, was git log anzeigt, wie man die Standardausgabe liest, welche Optionen am häufigsten verwendet werden und wie man sie kombiniert, um reale Fragen zu beantworten wie „Wer hat diese Datei geändert?" oder „Was kam zwischen zwei Releases rein?"
Was git log anzeigt
git log zeigt die committeten Snapshots eines Repositorys – die permanente Historie, die Git gespeichert hat. Das ist ein wichtiger Unterschied: git log zeigt niemals nicht committete Änderungen. Um stattdessen das Arbeitsverzeichnis und den Staging-Bereich zu inspizieren, verwenden Sie git status; um die zeilenweisen Änderungen anzuzeigen, die noch nicht committed wurden, verwenden Sie git diff.
Ohne Argumente aufgerufen, geht der Befehl rückwärts vom aktuellen Commit (HEAD) durch jeden übergeordneten Commit:
git logEin typischer Eintrag sieht so aus:
commit 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b (HEAD -> master)
Author: Bob Smith <[email protected]>
Date: Mon Jun 16 10:24:31 2026 +0400
Add login form validationJeder Commit listet seinen 40-stelligen SHA-1-Hash, den Autor, das Datum und die Commit-Nachricht auf. Standardmäßig wird die Ausgabe paginiert: Drücken Sie Space zum Scrollen und q zum Beenden. Commits werden in umgekehrt chronologischer Reihenfolge angezeigt.
Häufig verwendete Optionen
Die Log-Ausgabe kann auf vielfältige Weise angepasst werden, von der Filterung der angezeigten Commits bis hin zur Ausgabe in einem vollständig benutzerdefinierten Format. Hier sind die am häufigsten verwendeten Optionen:
| Befehl | Beschreibung |
|---|---|
git log | Zeigt die vollständige Commit-Historie im Standardformat. Verwenden Sie Space zum Scrollen und q zum Beenden, wenn die Ausgabe mehrere Bildschirme umfasst. |
git log -n <limit> | Begrenzt die Anzahl der Commits. Zum Beispiel zeigt git log -n 2 nur die 2 neuesten Commits an. |
git log --oneline | Verdichtet jeden Commit auf eine einzelne Zeile (kurzer Hash + Zusammenfassung) – ideal für einen schnellen Überblick. |
git log --stat | Fügt die Liste der geänderten Dateien sowie die Anzahl der hinzugefügten und gelöschten Zeilen für jeden Commit hinzu. |
git log -p | Zeigt den vollständigen Patch (Diff) für jeden Commit an. |
git log --author="<pattern>" | Filtert auf Commits eines bestimmten Autors. <pattern> kann eine einfache Zeichenkette oder ein regulärer Ausdruck sein. |
git log --grep="<pattern>" | Filtert auf Commits, deren Nachricht <pattern> entspricht (Zeichenkette oder Regex). |
git log <since>..<until> | Zeigt nur Commits an, die von <until> erreichbar, aber nicht von <since> erreichbar sind. Jede Seite kann eine Commit-ID, ein Branch-Name, ein Tag, HEAD oder eine andere Revisionsreferenz sein. |
git log <file> | Zeigt nur die Commits an, die die angegebene Datei berührt haben – ihre Änderungshistorie. |
git log --graph --decorate --oneline | Zeichnet einen Text-Graphen der Branch-/Merge-Struktur, beschriftet Branches und Tags und gibt eine Zeile pro Commit aus. |
git log --since="<date>" | Zeigt Commits an, die neuer als ein Datum sind (zum Beispiel "2 weeks ago" oder "2026-01-01"). |
git log --until="<date>" | Zeigt Commits an, die älter als ein Datum sind. |
git log --all | Zeigt Commits von jedem Branch und jeder Referenz an, nicht nur vom aktuellen Branch. |
Ein kompakter Überblick
Zum schnellen Durchsuchen der Historie ist --oneline die wichtigste Option. Kombiniert mit --graph und --decorate verwandelt sie das Log in eine lesbare Karte Ihrer Branches:
git log --graph --decorate --oneline* 1a2b3c4 (HEAD -> master) Add login form validation
* 9f8e7d6 Fix typo in README
| * 4c5d6e7 (feature) Start checkout flow
|/
* 0a1b2c3 Initial commitDie Sternchen und Verbindungslinien zeigen, wie Branches divergiert und gemergt wurden; (HEAD -> master) und (feature) sind die durch --decorate hinzugefügten Dekorationen.
Historie filtern
Die eigentliche Stärke von git log liegt darin, Tausende von Commits auf die relevanten einzugrenzen.
Nach Autor und Inhalt
Um jede Änderung eines bestimmten Autors an einer einzelnen Datei zu finden, kombinieren Sie --author, -p und einen Dateipfad:
git log --author="Bob Smith" -p w3docs.txtDies zeigt den vollständigen Diff jeder Änderung, die Bob an w3docs.txt vorgenommen hat. Um statt nach Autoren nach Commit-Nachrichten zu suchen, verwenden Sie --grep:
git log --grep="bugfix"Nach Datum
git log --since="2 weeks ago" --until="yesterday"--since und --until akzeptieren absolute Datumsangaben (2026-01-01) oder menschenlesbare relative Ausdrücke ("3 days ago", "last Monday").
Zwischen zwei Referenzen
Die <since>..<until>-Syntax (doppelter Punkt) beantwortet die Frage „Was ist in B, das nicht in A ist?" – ideal zum Vergleich von Branches vor einem Merge:
git log --oneline master..some-featureDies listet jeden Commit auf some-feature auf, der noch nicht in master gelandet ist. Tauschen Sie die Seiten aus, um die Umkehrung zu sehen. Da Tags ebenfalls als Revisionsreferenzen funktionieren, eignet sich dieselbe Syntax hervorragend für Release-Notes:
git log --oneline v1.0..v2.0Historie einer einzelnen Datei inspizieren
Wenn Sie verstehen möchten, wie sich eine Datei entwickelt hat, übergeben Sie ihren Pfad:
git log --oneline -- src/app.jsDer ---Trenner teilt Git mit, dass alles danach ein Pfad ist, was Mehrdeutigkeiten vermeidet, wenn eine Datei und ein Branch denselben Namen haben. Um die tatsächlichen Änderungen zusammen mit der Historie zu sehen, fügen Sie -p hinzu. Wenn Sie stattdessen wissen möchten, wer zuletzt jede Zeile geändert hat, verwenden Sie git blame. Um den vollständigen Inhalt eines bestimmten Commits zu inspizieren, verwenden Sie git show.
Häufige Fallstricke
git logzeigt nur committete Historie. Gestashte, gestagede oder nicht gespeicherte Änderungen werden nicht angezeigt – verwenden Sie dafür git status und git stash.- Standardmäßig wird nur der aktuelle Branch angezeigt. Fügen Sie
--allhinzu, um jeden Branch einzuschließen, oder benennen Sie einen Branch/eine Referenz explizit. - Verlorene Commits können oft wiederhergestellt werden. Selbst Commits, auf die kein Branch zeigt, können über git reflog noch erreichbar sein.
A..Bist nicht symmetrisch.master..featureundfeature..mastergeben unterschiedliche Commits zurück; die Reihenfolge ist wichtig.