W3docs

git log

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

gitlog

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 log

Ein 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 validation

Jeder 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:

BefehlBeschreibung
git logZeigt 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 --onelineVerdichtet jeden Commit auf eine einzelne Zeile (kurzer Hash + Zusammenfassung) – ideal für einen schnellen Überblick.
git log --statFügt die Liste der geänderten Dateien sowie die Anzahl der hinzugefügten und gelöschten Zeilen für jeden Commit hinzu.
git log -pZeigt 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 --onelineZeichnet 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 --allZeigt 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 commit

Die 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.txt

Dies 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-feature

Dies 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.0

Historie einer einzelnen Datei inspizieren

Wenn Sie verstehen möchten, wie sich eine Datei entwickelt hat, übergeben Sie ihren Pfad:

git log --oneline -- src/app.js

Der ---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 log zeigt 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 --all hinzu, 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..B ist nicht symmetrisch. master..feature und feature..master geben unterschiedliche Commits zurück; die Reihenfolge ist wichtig.

Übungen

Übung
Was sind die Funktionen und Optionen des Befehls 'git log'?
Was sind die Funktionen und Optionen des Befehls 'git log'?
Was this page helpful?