Einer der grundlegendsten Dienste von Git ist die Projekthistorie. Da Git alle Änderungen an Dateien verfolgt, die in einem Repository vorgenommen wurden, kann es sehr leistungsstarke Protokollierungsfunktionen bieten. Sie können den Verlauf eines Projekts auf viele verschiedene Arten abfragen und mit einem flexiblen Befehl verschiedene Daten extrahieren und anzeigen.
Das git log Befehl ist riesig, der größte aller regulären Git-Befehle. Sein Handbuch ist über 2.500 Zeilen lang. Glücklicherweise, git log bietet einen Großteil seines nützlichsten Verhaltens aus nur wenigen Schlüsseloptionen.
Grundlegende Protokollierung mit dem Standardverhalten
Standardmäßig, git log zeigt eine umgekehrt chronologische Liste von Commits. Jeder Commit enthält seinen Hash, Autor, Datum und die Commit-Nachricht:
Der Befehl verwendet einen Pager (z. B. weniger, mehr), um die vollständige Ausgabe anzuzeigen, damit Sie leicht durch die Ergebnisse navigieren können. Sie können Git so konfigurieren, dass es ein Programm Ihrer Wahl verwendet, wie z der meiste Pager.
Hier sind einige Git-Log-Ausgaben von das Repository des Git-Quellcodes selbst:
Commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> Master, Origin/Next,
Herkunft/Meister, Herkunft/HEAD)
Autor: Junio C Hamano
Datum: Mo 14. Juni 13:23:28 2021 +0900
Die zweite Charge
Unterzeichnet von: Junio C Hamano
Das Ergebnis beginnt mit dem Commit-Hash (670...) gefolgt von einer Liste von Branches, die derzeit auf diesen Commit zeigen (KOPF -> Meister, usw.)
Die nächste Zeile beschreibt den Autor dieses Commits mit Namen und E-Mail-Adresse.
Das vollständige Datum und die Uhrzeit des Commits folgen in der nächsten Zeile.
Schließlich wird der vollständige Inhalt der Commit-Nachricht angezeigt. Sie können fast alles andere, was git log bietet, mit Befehlszeilenoptionen steuern. Es gibt zwei Haupttypen von Optionen:
- Formatierung, die definiert, wie Git jeden Commit anzeigt.
- Filterung, die definiert, welche Commits git log beinhaltet.
Zusätzlich zu Befehlszeilenoptionen akzeptiert git log Argumente, die Dateien, Commits, Branches oder andere Referenztypen angeben. Diese wenden eine weitere Filterung an.
Formatieren der Git-Log-Ausgabe
Eine der einfachsten Anpassungen ist die --eine Linie Option, die eine sehr kurze Ausgabe erzeugt:
git log --oneline
Jede Zeile im Protokoll enthält jetzt nur noch einen abgekürzten Commit-Hash und den Betreff von die Commit-Nachricht. Dies ist eine hervorragende Möglichkeit, einen Überblick über die letzten Commits für das Projekt zu erhalten:
Leider sind diese Informationen ohne anderen Kontext nicht immer so nützlich. Es mag Ihnen ein vages Gefühl für das Projekt vermitteln, aber es fehlen Daten und andere nützliche Informationen über Autoren und Dateien.
Anzeigen eines Zweigdiagramms
Das --Graph Mit dieser Option können Sie Beziehungen zwischen Zweigen visualisieren. Es ist sehr einfach, kann aber helfen, eine komplizierte Geschichte zu entwirren.
git log --oneline --graph
Verbunden: So erstellen Sie einen neuen Branch in Git
Angepasste hübsche Ausgabe
Sie können eine kompliziertere Formatierung erreichen, indem Sie sie detailliert mit dem. angeben --ziemlich Möglichkeit. Die Syntax reicht von sehr einfach bis viel komplexer, also Konsultieren Sie ein Handbuch für vollständige Details.
git log --pretty=short
Ist im Wesentlichen dasselbe wie git log ohne Datum oder vollständige Nachricht:
git log --pretty=oneline
Ist äquivalent zu git log --oneline.
git log --pretty=fuller
Enthält viele Details. Es trennt sogar Autor und Committer, die theoretisch unterschiedliche Personen sein können:
Mit dem Format: -Variante können Sie eine Zeichenfolge mit beliebigem Inhalt angeben, einschließlich Platzhaltern, die durch verschiedene Daten ersetzt werden. Hier sind einige Beispiel-Platzhalter:
- %H Haschisch begehen
- %h abgekürzter Commit-Hash
- %Anzeige Autordatum
- %ar Autor Datum, Verwandter
- %s Betreff der Commit-Nachricht
- %b Commit-Nachrichtentext
- %p abgekürzte Eltern-Hashes
Sie können der Ausgabe feste Zeichen hinzufügen und sie einfärben. Dieses Beispiel zeigt auch eine Variation des Datumsformats:
git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short
Beachten Sie, dass das Datum in Klammern eingeschlossen ist. Welche Formatierung Sie auch wählen, wenn Sie möchten, dass die Ausgabe in einer Pipeline oder für andere Formen der Textverarbeitung nützlich ist, sollten Sie überlegen, wie Sie jeden Teil der Ausgabe abgrenzen.
Diffs im Log anzeigen
Ein wichtiges Detail bei der Betrachtung der Historie eines Repositorys sind die Diffs selbst. Sie repräsentieren schließlich, was sich im Code tatsächlich geändert hat! Für den Anfang können Sie mit jedem Commit eine Zusammenfassung der Änderungen erhalten, indem Sie verwenden --shortstat:
git log --shortstat
Dies fügt eine Zeile wie folgt hinzu:
1 Datei geändert, 48 Einfügungen (+), 2 Löschungen (-)
Am Ende jedes Commits. Sie werden oft diese Art von Zusammenfassung sehen – zum Beispiel auf allen Seiten auf GitHub – und es ist eine nützliche Möglichkeit, den Umfang eines bestimmten Commits schnell zu beurteilen. Für detailliertere Informationen können Sie die vollständige Patch-Ausgabe (Diffs) mit dem -p Flagge:
git log -p
Git-Log-Ausgabe filtern
Unabhängig davon, welche Formatierung Sie anwenden, sehen Sie immer noch das vollständige Protokoll aller Commits im aktuellen Branch. Auch wenn Git sie in Seiten aufteilt, kann dies immer noch eine Menge Ausgabe sein. Mit den folgenden Optionen können Sie anpassen, welche Commits das Protokoll enthält.
Einschränkung nach Betrag
Wenn Sie nur die Ergebnisse trimmen möchten, um die letzten paar Commits anzuzeigen, verwenden Sie die -[Nummer] Syntax:
git log -2
Einschränkung nach Datum
Um den Satz von Commits auf einen bestimmten Datumsbereich einzuschränken, verwenden Sie die --schon seit (--nach dem) und --bis um (--Vor) Optionen. Diese nehmen jeweils ein Datum im ISO 8601-Format an. Sie können entweder verwenden use --schon seit oder --bis um allein oder beide zusammen, um einen Bereich anzugeben. Die Optionen --nach dem und --Vor sind synonym.
git log --since="2021-01-01" --until="2021-05-01"
Einschränken nach Datei
Git log kann sich auf eine bestimmte Datei konzentrieren und nicht auf jede Datei in Ihrem Repository. Dies ist ideal, um herauszufinden, wie sich eine bestimmte Datei im Laufe der Zeit verändert hat. Fügen Sie einfach den Dateinamen an das Ende Ihres git-Befehls an:
Git-Log-Dateiname
Sie sehen nur die betroffenen Commits Dateiname.
Unterschiede zwischen den Filialen
Möglicherweise haben Sie beim Anzeigen des Protokolls einer Verzweigung einige spezielle Anforderungen. Anstatt beispielsweise den gesamten Verlauf anzuzeigen, möchten Sie möglicherweise nur sehen, was sich in diesem bestimmten Zweig geändert hat. Git-Log kann über die. helfen ref1..ref2 Syntax. Es gibt drei leicht unterschiedliche Ansätze, die Sie verwenden können:
- Commits anzeigen, die sich im Haupt-, aber nicht im Branch befinden:
git log --oneline origin/branch..origin/main
- Commits anzeigen, die sich im Branch, aber nicht im Main befinden:
git log --oneline origin/Main..Ursprung/Ast
- Commits anzeigen, die nur in Branch oder Main vorhanden sind:
git log --oneline origin/branch...Herkunft/Haupt
Genauso wie Sie den Verlauf zwischen den Zweigen mit der ref1..ref2 Syntax können Sie auch den Verlauf zwischen Tags auf die gleiche Weise anzeigen. Schließlich sind sowohl Tags als auch Verzweigungen Referenztypen.
git log --abbrev-commit --pretty=format:'%h %ar %s' v2.32.0-rc3..v2.32.0
Wenn Sie Versionshinweise für ein größeres Projekt vorbereiten, git Shortlog sollte Ihre erste Anlaufstelle sein. Es erstellt eine Liste von Autoren mit Commit-Themen daneben. Sie können ihm einen Referenzbereich übergeben, um den Verlauf ähnlich wie bei git log einzuschränken:
git shortlog v2.32.0-rc3..v2.32.0
Das git show-Befehl ist noch vielseitiger als git log. Es kann mit Tags und anderen Arten von Git-Objekten über den Commit-Verlauf hinaus arbeiten. Es teilt viele Optionen mit git log, aber Sie werden es nur wirklich brauchen, wenn Sie sich in Details auf niedrigerer Ebene vertiefen müssen.
Überprüfen Sie die Vergangenheit mit Git Log
Git log ist ein komplizierter Befehl, aber Sie können mit seinen grundlegendsten Optionen viel nutzen. Das Durchsuchen der Historie eines Repositorys ist eine hervorragende Möglichkeit, um zu verstehen, wie oft Änderungen auftreten und wie viele Personen sie vornehmen. Wenn Sie die Geschichte eines Projekts gut verstehen, können Sie selbst dazu beitragen.
Möchten Sie Ihre Programmiermuskeln trainieren und Open-Source-Projekten helfen? So tragen Sie zu GitHub bei.
Weiter lesen
- Programmierung
- GitHub
- Codierungstipps
Bobby ist ein Technologie-Enthusiast, der fast zwei Jahrzehnte als Software-Entwickler gearbeitet hat. Er hat eine Leidenschaft für Spiele, arbeitet als Rezensionsredakteur beim Switch Player Magazine und vertieft sich in alle Aspekte des Online-Publishing und der Webentwicklung.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Noch ein Schritt…!
Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.