Git – Repository Änderungen anzeigen
Der Vorteil eines Versionskontrollsystems ist, dass es alle Änderungen erfasst, die du un dein Team machst. Diese Protokollierung erlaubt es uns, Informationen wie z.B. Commits, Fehlermeldungen und Updates abzurufen. Aber, dieses ganze Historie ist nutzlos, wenn wir darin nicht navigieren können. Die Lösung dafür ist der git log Befehl.
Git-Log ist ein Hilfsprogramm, mit dem wir die Historie von allem, was in einem Repository passiert, einsehen und auslesen können. Mehrere Optionen können mit git log verwendet werden, um die Ausgabe der History spezifischer zu machen.
Im Allgemeinen ist git log eine Aufzeichnung der Commits. Ein Git-Log enthält die folgenden Daten:
- Ein Commit-Hash: Das sind 40-Zeichen lange Prüfsummendaten, die vom SHA-Algorithmus (Secure Hash Algorithmus) generiert werden. Es ist immer eine eindeutige Nummer.
- Commit-Autor-Metadaten: Die Informationen der Autoren wie Autorenname und E-Mail.
- Commit-Date-Metadaten: Die Metadaten des Commit-Datums: Es ist ein Datums-Zeitstempel für die Zeit des gemachten Commits.
- Commit-Titel/Nachricht: Es ist die Übersicht über den Commit, die in der Commit-Nachricht angegeben wird.
Wie verlasse ich den Git-Log-Befehl?
Es kann passieren, dass du Git-Log-Befehl ausführst und jetzt nicht mehr aus dem Editor rauskommst. Hilfe!!!
Du willst tippen oder zurück in die Kommandozeile, aber du kommst einfach nicht mehr raus.
Die Lösung für dieses Problem ist, die Taste q (Q für quit) zu drücken. Es beendet das Textprogramm und bringt dich zurück zur Kommandozeile. Jetzt kannst du wieder wie üblich verfahren.
Der einfache "git log" Befehl
Der git log-Befehl ist einer der beliebtesten Befehle von Git. Er ist super nützlich, da du ihn jedes mal brauchst, wenn du den Verlauf überprüfen musst. Der "git log" Befehl (ohne zusätzliche Argumente) zeigt die letzten Commits und den Status des Heads an.
Syntax:
git log
Der obige Befehl zeigt die letzten Commits an.
Der Output sieht ungefähr so aus:
commit c329b18108ecbea0269d00df1af8cc233f1ef792 (HEAD -> master)
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:41:15 2020 +0200
Hallowelt Datei hinzugefügt
commit 1a1421ef98c93fb42f08544c6bb83510fc6829bb
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:35:56 2020 +0200
Mein zweiter Commit.
commit 5260c9e1f82c475d067e24d75024f2c3702952b4
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:24:23 2020 +0200
Mein erster Commit.
Hier als Screenshot in Git Bash:

Der obige Befehl listet alle aktuellen Commits auf. Jeder Commit enthält eine eindeutige sha-id, die durch den SHA-Algorithmus generiert wird. Sie enthält auch das Datum, die Zeit, den Autor und einige zusätzliche Details.
Wir können einige Aktionen wie das Scrollen, Auf-/Ab-Bewegen und Beenden in der Kommandozeile ausführen. Um in der Kommandozeile zu scrollen, drücke k, um nach oben zu gehen, j, um nach unten zu gehen, die Leertaste und q, um die Kommandozeile zu verlassen.
Der Befehl "git log --oneline"
Die Oneline-Option wird verwendet, um einen Commit pro Zeile anzuzeigen. Ebenfalls werden die ersten sieben Zeichen des Commit-SHA und die Commit-Meldung angezeigt.
Syntax:
git log --oneline
Wir halten Folgendes für die --oneline Option fest:
- ein Commit pro Zeile
- die ersten sieben Charaktere des SHA
- die Commit-Nachricht
Der Output sieht ungefähr so aus:
c329b18 (HEAD -> master) Hallowelt Datei hinzugefügt
1a1421e Mein zweiter Commit.
5260c9e Mein erster Commit.
Hier als Screenshot in Git Bash:

Wie wir aus der obigen Ausgabe genauer sehen können, wird jeder Commit nur in einer Zeile mit einer siebenstelligen sha-Nummer und einer Commit-Nachricht angegeben.
Der Befehl "git log --stat"
Der Befehl log zeigt die Dateien an, die geändert wurden. Er zeigt auch die Anzahl der Zeilen und eine Zusammenfassungszeile der gesamten Datensätze an, die aktualisiert wurden.
Allgemein können wir sagen, dass die Option stat verwendet wird, um Folgendes anzuzeigen
- die modifizierten Dateien,
- Die Anzahl der Zeilen, die hinzugefügt oder entfernt wurden
- Eine Zusammenfassungszeile über die Gesamtzahl der geänderten Datensätze
- Die Zeilen, die hinzugefügt oder entfernt wurden.
Syntax:
git log --stat
Der obige Befehl zeigt die Dateien an, die geändert wurden.
Output:
commit c329b18108ecbea0269d00df1af8cc233f1ef792 (HEAD -> master)
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:41:15 2020 +0200
Hallowelt Datei hinzugefügt
hallowelt.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
commit 1a1421ef98c93fb42f08544c6bb83510fc6829bb
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:35:56 2020 +0200
Mein zweiter Commit.
lerneprogrammieren.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
commit 5260c9e1f82c475d067e24d75024f2c3702952b4
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:24:23 2020 +0200
Mein erster Commit.
lerneprogrammieren.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Aus der obigen Ausgabe können wir sehen, dass alle aufgelisteten Commits Änderungen im Repository sind.
Filtern der Commit-Historie
Wir können die Ausgabe nach unseren Bedürfnissen filtern. Das ist ein einzigartiges Feature von Git. Wir können viele Filter wie Menge, Datum, Autor und mehr auf die Ausgabe anwenden. Jeder Filter hat seine Spezifikationen. Sie können verwendet werden, um einige Navigationsoperationen in der Ausgabe zu implementieren.
Lass uns jeden dieser Filter im Detail verstehen.
Gefiltert nach Anzahl:
Wir können die Anzahl der Output-Commits begrenzen, indem wir den Befehl git log verwenden. Es ist der spezifischste Befehl. Dieser Befehl wird die Komplexität entfernen, wenn du an weniger Commits interessiert bist.
Um die Ausgabe des Git-Logs zu begrenzen, benutzen wir die Option -<n>. Wenn wir nur die letzten drei Commits wollen, dann können wir das Argument mit -3 im git log Befehl übergeben.
Der Output sieht ungefähr so aus:
commit c329b18108ecbea0269d00df1af8cc233f1ef792 (HEAD -> master)
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:41:15 2020 +0200
Hallowelt Datei hinzugefügt
commit 1a1421ef98c93fb42f08544c6bb83510fc6829bb
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:35:56 2020 +0200
Mein zweiter Commit.
commit 5260c9e1f82c475d067e24d75024f2c3702952b4
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:24:23 2020 +0200
Mein erster Commit.
Hier als Screenshot aus Git Bash:

Wie wir aus der obigen Ausgabe sehen können, können wir die Ausgabe von git log begrenzen.
Gefiltert nach Datum und Zeit:
Wir können die Ausgabe nach Datum und Zeit filtern. Wir müssen --after oder -before übergeben, um das Datum anzugeben. Diese beiden Argumente akzeptieren eine Vielzahl von Datumsformaten. Es läuft wie folgt ab:
git log --after="yy-mm-dd"
Der obige Befehl zeigt alle Commits an, die nach dem angegebenen Datum gemacht wurden.
Output:
commit c329b18108ecbea0269d00df1af8cc233f1ef792 (HEAD -> master)
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:41:15 2020 +0200
Hallowelt Datei hinzugefügt
Hier als Screenshot aus Git Bash:

Der obige Befehl listet alle Commits nach dem "2020-07-23" auf.
Wir können auch die zutreffende Referenzanweisung wie "gestern", "vor 1 Woche", "vor 30 Tagen" und mehr übergeben. Achte darauf, dass Git nur die englische Schreibweise kennt z.B. "yesterday", "21 days ago" usw. Hier ein Beispiel:
git log --after="30 days ago"
Der obige Befehl zeigt die Commits an, die vor 30 Tagen gemacht wurden.
Da ich in unserem Beispiel-Repository keine Commits habe, die so alt sind, spare ich dir hier den Output bzw. den Git Bash Screenshot.
Gefiltert nach zwei Terminen:
Wir können auch die Commits zwischen zwei Daten verfolgen. Um die Commits, die zwischen zwei Daten erstellt wurden, zu verfolgen, gib eine Anweisungsreferenz an --vor und --nach dem Datum. Angenommen, wir wollen die Commits zwischen "2020-07-20" und "2020-07-24" verfolgen. Wir werden den Befehl wie folgt ausführen:
git log --after="2020-07-20" --before="2020-07-24 "
Der obige Befehl zeigt die Commits an, die zwischen den Daten gemacht wurden. Wir können auch --since und --untill anstelle von --after und --before verwenden. Sie können synonym verwendet werden.
Gefiltert nach Commit-Nachricht:
Um die Commits nach Commit-Nachricht zu filtern, können wir die grep-Option verwenden. Das sieht dann wie folgt aus:
git log --grep="Commit Nachricht"
Wir können auch einen Teil der Commit-Nachricht anstelle einer vollständigen Nachricht im Befehl verwenden.
Lass uns nach dem Commit suchen, der die Commit-Nachricht "zweiter" enthält:
git log --grep="zweiter"
Der Output sieht ungefähr so aus:
commit 1a1421ef98c93fb42f08544c6bb83510fc6829bb
Author: Daniel Schwede <daniel@lerneprogrammieren.de>
Date: Fri Jul 24 12:35:56 2020 +0200
Mein zweiter Commit.
Hier als Screenshot aus Git Bash:

Die obige Ausgabe zeigt alle Commits an, die das Wort commit in ihrer Commit-Meldung enthalten.
Zusammenfassung
Es gibt viele weitere Filter, wie z.B. das Filtern nach Dateinamen, Inhalten und mehr. Die wichtigsten Befehle, um in der Git Log zu navigieren, hast du hier bereits gelernt. Du bist jetzt in der Lage die Historie der Commits in einem Repository problemlos zu durchsuchen.