Commit-Historie mit git log lesen Commit-Historie mit git log lesen Ein Repository ist nur so wertvoll wie die Geschichte, die es erzählt. Mit jedem Commit wächst ein Protokoll, das dokumentiert, wer wann welche Änderung vorgenommen hat und warum. Der Befehl git log ist das zentrale Werkzeug, um dieses Protokoll zu lesen – und wer ihn beherrscht, kann sich in jedem Projekt schnell orientieren, unabhängig davon, wie alt oder komplex es ist. Die Grundform verstehen Ohne weitere Optionen zeigt git log die Historie in umgekehrter chronologischer Reihenfolge an – der neueste Commit steht oben: git log Die Ausgabe sieht typischerweise so aus: commit 8f3c1a9b2e4d5f6a7b8c9d0e1f2a3b4c5d6e7f8a Author: Anna Beispiel Date: Mon Mar 4 14:22:07 2024 +0100 Formular-Validierung hinzugefügt commit 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b Author: Anna Beispiel Date: Mon Mar 4 13:05:41 2024 +0100 Erste Projektstruktur angelegt Jeder Eintrag besteht aus vier festen Bestandteilen: Commit-Hash – die eindeutige, vierzig Zeichen lange SHA-1-Kennung des Commits. Author – Name und E-Mail-Adresse der Person, die den Inhalt erstellt hat. Date – Zeitstempel inklusive Zeitzone. Commit-Nachricht – der erklärende Text, den du beim Commit vergeben hast. Da lange Hashes unhandlich sind, genügt fast immer ein eindeutiges Präfix von sechs bis acht Zeichen, um einen Commit später zu referenzieren. Kompakte Ansichten mit --oneline Bei größeren Historien wird die ausführliche Ansicht schnell unübersichtlich. Die Option --oneline reduziert jeden Commit auf eine einzige Zeile: git log --oneline 8f3c1a9 Formular-Validierung hinzugefügt 1a2b3c4 Erste Projektstruktur angelegt Diese verkürzte Form ist der Standard für einen schnellen Überblick und wird häufig mit weiteren Optionen kombiniert. Den Verlauf begrenzen Nicht immer wird die gesamte Historie benötigt. Mit -n beschränkst du die Ausgabe auf eine bestimmte Anzahl von Commits: git log -n 5 Alternativ lässt sich der Zeitraum eingrenzen: git log --since="2 weeks ago" git log --until="2024-03-01" git log --since="2024-01-01" --until="2024-02-01" Nach Inhalt und Person filtern git log erlaubt gezielte Suchen innerhalb der Historie, ohne dass du die Ausgabe manuell durchsuchen musst. Ziel Befehl Nach Autor filtern git log --author="Anna" Nach Nachrichtentext suchen git log --grep="Validierung" Commits einer Datei anzeigen git log -- pfad/zur/datei.php Nur Merge-Commits anzeigen git log --merges Merge-Commits ausblenden git log --no-merges Diese Filter lassen sich beliebig kombinieren, etwa um alle Commits einer bestimmten Person innerhalb eines Zeitraums zu einer bestimmten Datei zu finden. Änderungen direkt mitanzeigen Manchmal reicht die Nachricht allein nicht aus – du willst sehen, was sich tatsächlich geändert hat. git log -p zeigt zu jedem Commit den vollständigen Patch (Diff) an. git log --stat zeigt stattdessen eine kompakte Statistik mit geänderten Dateien und der Anzahl hinzugefügter beziehungsweise entfernter Zeilen. git log --stat 8f3c1a9 Formular-Validierung hinzugefügt src/Validator.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) Diese Übersicht eignet sich gut, um schnell einzuschätzen, wie umfangreich ein Commit war, ohne den gesamten Patch lesen zu müssen. Eigene Formate mit --pretty und --format Für individuelle Ansichten bietet Git das Format --pretty=format:"…", mit dem du festlegst, welche Informationen in welcher Reihenfolge erscheinen. git log --pretty=format:"%h – %an, %ar : %s" 8f3c1a9 – Anna Beispiel, 2 hours ago : Formular-Validierung hinzugefügt 1a2b3c4 – Anna Beispiel, 3 hours ago : Erste Projektstruktur angelegt Die wichtigsten Platzhalter: Platzhalter Bedeutung %h Kurzer Commit-Hash %H Vollständiger Commit-Hash %an Autorenname %ae Autoren-E-Mail %ad / %ar Datum absolut / relativ %s Betreffzeile der Commit-Nachricht Da solche Formate schnell lang werden, lohnt es sich, sie später als Git-Alias zu speichern – ein Thema, das in einem eigenen Kapitel zu fortgeschrittenen Werkzeugen vertieft wird. Verzweigungen sichtbar machen Sobald ein Projekt mehrere Branches enthält, hilft eine grafische Darstellung, Zusammenhänge zu erkennen: git log --oneline --graph --all * 8f3c1a9 (HEAD -> main) Formular-Validierung hinzugefügt * 1a2b3c4 Erste Projektstruktur angelegt Die Option --graph zeichnet die Commit-Struktur mit Zeichen wie *, | und \, während --all sämtliche Branches statt nur den aktuellen einbezieht. In einem reinen lokalen Repository mit nur einem Branch wirkt diese Ansicht noch schlicht – ihr Nutzen zeigt sich erst, sobald mehrere Branches parallel existieren, wie in einem späteren Kapitel ausführlich behandelt wird. Relative Referenzen im Log verwenden Anstelle vollständiger Hashes kannst du Commits relativ zum aktuellen Stand ansprechen: git log HEAD~1 git log HEAD~2..HEAD HEAD~1 bezeichnet den Elternteil des aktuellen Commits, HEAD~2 den Großelternteil und so weiter. Der Bereichsoperator .. zeigt alle Commits zwischen zwei Punkten an – eine Notation, die in späteren Kapiteln zu Branches und Vergleichen regelmäßig wiederkehrt. Ausblick: Historie in PhpStorm Alles, was hier über die Kommandozeile erarbeitet wurde, lässt sich auch grafisch im Git-Werkzeugfenster von PhpStorm nachvollziehen – inklusive Filterung, Diff-Ansicht und Graphdarstellung per Mausklick. Da dieser Kurs bewusst Kommandozeile und IDE parallel vermittelt, wird der identische Workflow am Ende dieses Kapitels vollständig in PhpStorm wiederholt. Checkliste für den Alltag 📜 git log --oneline für einen schnellen Überblick. 🔍 git log --grep oder --author, um gezielt zu suchen. 📊 git log --stat, um den Umfang von Änderungen einzuschätzen. 🌳 git log --graph --all, sobald mehrere Branches im Spiel sind. ✂️ HEAD~n, um relativ zum aktuellen Stand zu navigieren. Wer diese Grundtechniken verinnerlicht, verfügt über das Handwerkszeug, um sich in jedem – auch fremden – Git-Repository zügig zurechtzufinden, bevor im nächsten Abschnitt mit git diff der inhaltliche Vergleich von Änderungen im Detail folgt.