git log

Untersuchen & Vergleichen

Commit-Logs anzeigen


Der Befehl 'git log' zeigt die Commit-Historie deines Repositorys. Er listet Commits in umgekehrt chronologischer Reihenfolge (neueste zuerst) mit Hash, Autor, Datum und Nachricht. Mit verschiedenen Optionen passt du das Ausgabeformat an, filterst Commits und verfolgst die Historie einer Datei. Unverzichtbar, um die Projektgeschichte zu verstehen und bestimmte Änderungen zu finden.

Syntax

git log [<options>] [<revision-range>] [[--] <path>...]
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (4)

Kurzform für --pretty=oneline --abbrev-commit. Zeigt jeden Commit in einer einzigen Zeile mit abgekürztem Hash.

EmpfohlenKompakte Einzeilen-Historie – der beste Überblick im Alltag

Beispiel

git log --oneline

Eine grafische Textdarstellung der Commit-Historie zeichnen. Zeigt die Branch- und Merge-Struktur visuell.

EmpfohlenZeigt, wo Branches abzweigen und gemergt werden; mit --oneline kombinieren

Beispiel

git log --oneline --graph

Commits zeigen, die von allen Refs erreichbar sind – jedem lokalen Branch, Remote-Tracking-Branch und Tag (plus dem Stash) – nicht nur von HEAD. Zusammen mit --graph unverzichtbar.

EmpfohlenMit --graph zeigt es jeden Branch, jeden Tag und jede Remote-Tracking-Ref

Beispiel

git log --oneline --all

Die Zahl der angezeigten Commits begrenzen. -n 5 zeigt nur die 5 neuesten Commits; -5 und --max-count=5 sind gleichwertige Formen.

EmpfohlenBegrenzt die Ausgabe auf die neuesten N Commits

Beispiel

git log -n 5

Fortgeschritten (2)

Den Diff (Patch) jedes Commits zeigen. Du siehst genau, was sich in jedem Commit geändert hat. Merge-Commits zeigen standardmäßig keinen Diff.

Bei BedarfVollständige Diffs sind lang; kombiniere mit -n oder einem Pfad. Merges zeigen standardmäßig keinen Diff

Beispiel

git log -p

Commits filtern, deren Autorenname oder E-Mail zum Muster passt (eine Regex mit Groß-/Kleinschreibung; -i ignoriert sie). Praktisch, um zu sehen, was eine bestimmte Person geschrieben hat.

Bei BedarfFiltert nach Autor: Regex mit Groß-/Kleinschreibung; -i ignoriert sie

Beispiel

git log --author="John"

Die richtige Option wählen

Ausgabeformate von log

Das passende Format wählen

BefehlZeigtAusführlichkeitAm besten für
git logAlle DetailsHochGenaue Prüfung
git log --onelineHash + NachrichtNiedrigSchneller Überblick
git log --statGeänderte Dateien pro CommitMittelUmfang der Änderungen sehen
git log -pVollständiger DiffSehr hochCode-Review

Commits filtern

Bestimmte Commits in der Historie finden

BefehlFiltern nachBeispiel
--authorPerson, die den Commit geschrieben hat (Autor; für den Committer --committer nutzen)--author="John"
--since/--untilZeitraum--since="2024-01-01"
--grepCommit-Nachricht--grep="fix"
-- <path>Geänderte Dateien-- src/app.js

Log oder Reflog

Verstehen, wann man welches nutzt

BefehlZeigtÜbersteht Reset?Nutzen für
git logCommit-Historie des BranchesNoNormale Historie ansehen
git reflogAlle HEAD-BewegungenJaVerlorene Commits retten

Beispiele

Neueste Commits ansehen

git log

Zeigt die vollständige Historie mit Hash, Autor, Datum und Nachricht.


Kompakte Einzeilen-Ansicht

git log --oneline

Zeigt jeden Commit in einer Zeile mit kurzem Hash und Nachricht.


Historie einer Datei ansehen

git log -- path/to/file.js

Zeigt nur Commits, die die angegebene Datei geändert haben.


Visueller Branch-Graph

git log --oneline --graph --all

Zeigt einen Textgraphen aller Branches und ihrer Commits.

Workflow-Beispiele

1
git log --oneline -10

Schneller Blick auf die letzten 10 Commits

2
git log -p -1

Den vollständigen Diff des neuesten Commits ansehen

1
git log --oneline -- path/to/file.js

Commits auflisten, die diese Datei geändert haben

2
git log -p -- path/to/file.js

Die tatsächlichen Änderungen ansehen

3
git blame path/to/file.js

Sehen, wer jede Zeile geschrieben hat

1
git log --oneline --graph --all

Vollständige Branch-Ansicht

2
git log --oneline --graph main..feature

Commits in feature, die nicht in main sind

Fehlerbehebung

Log-Ausgabe ist zu lang / ich komme nicht heraus

Ursache: Git nutzt standardmäßig den Pager 'less'

Drücke 'q' zum Beenden. Begrenze mit -n oder leite an head weiter: git log --oneline | head -20

Commits anderer Branches fehlen

Ursache: Git log zeigt standardmäßig nur Commits, die von HEAD (deinem aktuellen Branch) erreichbar sind

Nutze --all: git log --oneline --all

Ich finde einen Commit nicht, von dem ich weiß, dass es ihn gibt

Ursache: Der Commit ist vielleicht auf einem anderen Branch oder wurde per Reset entfernt

Versuche git reflog, um alle letzten HEAD-Positionen zu sehen, auch nach Resets

Log zeigt zu viel / zu wenig Information

Ursache: Das Standardformat passt vielleicht nicht zu deinem Bedarf

Nutze --oneline für kurz, -p für ausführlich, --stat für eine Dateiübersicht

Tipps & Stolperfallen

Best Practices

  • ✓Nutze --oneline für einen schnellen Überblick, das volle Log für eine genaue Prüfung
  • ✓Kombiniere --graph --all --oneline für eine vollständige Branch-Ansicht
  • ✓Nutze -n, um die Ausgabe zu begrenzen, wenn du nur die neuesten Commits brauchst
  • ✓Filtere nach Autor, Datum oder Pfad, um bestimmte Änderungen zu finden
  • ✓Nutze git log main..feature, um Commits zu sehen, die nur ein Branch hat

Häufige Fehler

  • ✗Nicht wissen, dass man mit 'q' die Log-Ansicht verlässt (sie nutzt standardmäßig den Pager less).
  • ✗--all vergessen, wenn man Commits aller Branches sehen will, nicht nur des aktuellen.
  • ✗git log nutzen, wo git reflog nötig ist – log zeigt die Commit-Historie, reflog zeigt alle Ref-Änderungen einschließlich Resets.
  • ✗Kein -- vor Dateipfade setzen, was zu Verwechslungen mit Branch-Namen führen kann.

FAQ

A:

Drücke 'q'. Git log nutzt den Pager 'less'. Du kannst die Ausgabe auch mit -n begrenzen oder an head weiterleiten.

A:

Nutze --all: git log --oneline --all. Ohne siehst du nur Commits, die von deinem aktuellen Branch (HEAD) erreichbar sind.

A:

Nutze -p (Patch): git log -p. Mit -1 siehst du nur den neuesten: git log -p -1

A:

Nutze --author: git log --author="name". Passt auf Teile von Namen und E-Mails (Groß-/Kleinschreibung zählt; -i ignoriert sie).

A:

Log zeigt die Commit-Historie. Reflog zeigt alle HEAD-Bewegungen einschließlich Resets. Mit reflog rettest du „verlorene“ Commits.