Einführung
Willkommen, Git-Zeitreisender! Heute begeben wir uns auf eine spannende Reise durch die Vergangenheit Ihrer Git-Projekte. Eine der leistungsstärksten Funktionen von Git ist die Fähigkeit, die gesamte Historie Ihres Projekts lückenlos zu verfolgen und darzustellen. Diese Historie ist nicht nur ein Protokoll der Ereignisse, sondern ein mächtiges Werkzeug, um Ihr Projekt besser zu verstehen, Fehler zu finden (Debugging) und die Codequalität zu verbessern.
In diesem Lab werden wir den Befehl git log erkunden – Ihr Fenster in die historischen Aufzeichnungen von Git. Wir beginnen mit der grundlegenden Nutzung und tauchen dann in fortgeschrittene Techniken ein, wie das Formatieren der Log-Ausgabe, das Filtern nach Datum, die Suche nach spezifischen Änderungen und sogar das Erstellen von Statistiken aus Ihrer Projekthistorie.
Am Ende dieses Labs werden Sie in der Lage sein, wie ein Profi durch die Historie Ihres Projekts zu navigieren und wertvolle Erkenntnisse zu gewinnen, die Sie zu einem effizienteren Entwickler machen. Egal, ob Sie einen Bug aufspüren, Änderungen überprüfen oder einfach nur verstehen wollen, wie sich Ihr Projekt entwickelt hat – die hier erlernten Fähigkeiten werden für Sie von unschätzbarem Wert sein.
Steigen wir in unsere Git-Zeitmaschine und erkunden die Vergangenheit!
Einrichten Ihres Arbeitsbereichs
Bevor wir uns in die Historien-Funktionen von Git vertiefen, richten wir einen Arbeitsbereich mit einer kleinen Commit-Historie ein. Wir erstellen ein neues Verzeichnis, initialisieren ein Git-Repository und fügen einige Commits hinzu.
Öffnen Sie Ihr Terminal und geben Sie diese Befehle ein:
cd ~/project
mkdir git-history-lab
cd git-history-lab
git init
Lassen Sie uns nun einige Dateien erstellen und eine Reihe von Commits durchführen, indem Sie die folgenden Befehle kopieren und einfügen:
echo "## Git History Lab" > README.md
git add README.md
git commit -m "Initial commit"
echo "function hello() {" > script.js
echo " console.log('Hello, Git!');" >> script.js
echo "}" >> script.js
git add script.js
git commit -m "Add hello function"
echo "function goodbye() {" >> script.js
echo " console.log('Goodbye, Git!');" >> script.js
echo "}" >> script.js
git add script.js
git commit -m "Add goodbye function"
echo "This is a test file" > test.txt
git add test.txt
git commit -m "Add test file"
echo "hello();" >> script.js
echo "goodbye();" >> script.js
git add script.js
git commit -m "Call hello and goodbye functions"
Hier ist eine Zusammenfassung dessen, was wir gerade getan haben:
- Wir haben eine README-Datei erstellt und unseren ersten Commit (Initial Commit) gemacht.
- Wir haben eine JavaScript-Datei mit einer "hello"-Funktion erstellt und committet.
- Wir haben eine "goodbye"-Funktion zur gleichen Datei hinzugefügt und committet.
- Wir haben eine Testdatei hinzugefügt und committet.
- Schließlich haben wir unser Skript so geändert, dass beide Funktionen aufgerufen werden, und diese Änderungen committet.
Jetzt haben wir ein Repository mit einer Historie, die wir erkunden können!
Grundlegende Log-Nutzung
Da wir nun eine Commit-Historie haben, schauen wir uns die grundlegende Verwendung von git log an.
Um die Commit-Historie Ihres Projekts anzuzeigen, führen Sie einfach diesen Befehl aus:
git log
Sie sollten eine Ausgabe sehen, die in etwa so aussieht:
commit 1234567890abcdef1234567890abcdef12345678 (HEAD -> main)
Author: Your Name <your.email@example.com>
Date: Mon Jun 5 10:00:00 2023 +0000
Call hello and goodbye functions
commit 2345678901abcdef2345678901abcdef23456789
Author: Your Name <your.email@example.com>
Date: Mon Jun 5 09:45:00 2023 +0000
Add test file
...
Jeder Eintrag im Log zeigt:
- Den vollständigen Commit-Hash (eine eindeutige Kennung für den Commit)
- Den Autor des Commits
- Datum und Uhrzeit des Commits
- Die Commit-Nachricht
Standardmäßig zeigt git log alle Commits an, beginnend mit dem neuesten. Die Anzeige erfolgt in umgekehrter chronologischer Reihenfolge.
Wenn die Ausgabe lang ist, zeigt Git sie in einem Pager an (normalerweise less). Sie können mit den Pfeiltasten navigieren und q drücken, um die Ansicht zu beenden.
Für eine kompaktere Version des Logs können Sie diesen Befehl verwenden:
git log --oneline
Dies zeigt jeden Commit in einer einzigen Zeile an, reduziert auf den kurzen Commit-Hash und die Commit-Nachricht.
Denken Sie daran: git log ist Ihr Fenster in die Vergangenheit des Projekts. Es ist ein hervorragender Ausgangspunkt, um zu verstehen, welche Änderungen wann und von wem vorgenommen wurden.
Formatieren der Log-Ausgabe
Git bietet leistungsstarke Optionen zum Formatieren der Log-Ausgabe, um genau die Informationen anzuzeigen, die Sie benötigen. Lassen Sie uns einige dieser Optionen untersuchen.
Um die Dateien anzuzeigen, die in jedem Commit geändert wurden, verwenden Sie die Option --stat:
git log --stat
Dies zeigt Ihnen, welche Dateien in jedem Commit geändert wurden und wie viele Zeilen hinzugefügt oder entfernt wurden.
Für eine detailliertere Ansicht der Änderungen verwenden Sie die Option -p:
git log -p
Dies zeigt den tatsächlichen Patch (die hinzugefügten und entfernten Zeilen) für jeden Commit an. Dies ist sehr nützlich, um Änderungen im Detail zu überprüfen.
Sie können auch benutzerdefinierte Formate mit der Option --pretty erstellen. Zum Beispiel:
git log --pretty=format:"%h - %an, %ar : %s"
Dies zeigt:
%h: Abgekürzter Commit-Hash%an: Name des Autors%ar: Datum des Autors (relativ, z. B. "vor 2 Tagen")%s: Betreff (Commit-Nachricht)
Sie können diesen Format-String anpassen, um beliebige Informationen einzuschließen. Hier sind einige nützliche Platzhalter:
%H: Vollständiger Commit-Hash%ad: Datum des Autors%cn: Name des Committers%ce: E-Mail des Committers%cd: Datum des Committers
Experimentieren Sie mit verschiedenen Formaten, um herauszufinden, was für Sie am besten funktioniert!
Filtern des Logs nach Datum
Oft möchten Sie Commits innerhalb eines bestimmten Zeitraums betrachten. Git bietet mehrere Optionen, um das Log nach Datum zu filtern.
Um Commits aus der letzten Woche anzuzeigen:
git log --since=1.week
Sie können auch spezifische Daten verwenden:
git log --after="2023-06-01" --before="2023-06-30"
Dies zeigt Commits zwischen dem 1. Juni und dem 30. Juni 2023 an.
Git versteht eine Vielzahl von Datumsformaten, einschließlich relativer Angaben wie "yesterday", "1 month 2 weeks 3 days ago" usw.
Sie können auch die Option --until anstelle von --before verwenden, und --after ist gleichbedeutend mit --since.
Beachten Sie, dass diese Filter Commits anzeigen, deren Commit-Datum in den angegebenen Bereich fällt. Das Commit-Datum ist der Zeitpunkt, an dem der Commit erstellt wurde, was sich von dem Zeitpunkt unterscheiden kann, an dem die eigentlichen Codeänderungen vorgenommen wurden.
Wenn Sie untersuchen, wann eine bestimmte Änderung eingeführt wurde, möchten Sie vielleicht die Option --grep verwenden, um nach spezifischen Commit-Nachrichten zu suchen, was wir im nächsten Schritt behandeln werden.
Suche im Log nach spezifischen Änderungen
Git bietet leistungsstarke Suchfunktionen, die Ihnen helfen, bestimmte Commits zu finden. Lassen Sie uns einige dieser Funktionen erkunden.
Um nach Commits mit einem bestimmten Wort in der Commit-Nachricht zu suchen:
git log --grep="function"
Dies zeigt alle Commits an, in denen das Wort "function" in der Commit-Nachricht vorkommt.
Sie können auch nach Änderungen an einer bestimmten Datei suchen:
git log -- script.js
Dies zeigt alle Commits an, die die Datei script.js betroffen haben.
Um nach Änderungen zu suchen, die eine bestimmte Codezeile hinzugefügt oder entfernt haben:
git log -S "console.log"
Dies wird als "Pickaxe"-Suche bezeichnet. Es zeigt Commits an, bei denen sich die Anzahl der Vorkommen von "console.log" geändert hat.
Sie können diese Optionen kombinieren. Um beispielsweise detaillierte Änderungen an script.js aus der letzten Woche zu sehen:
git log -p --since=1.week -- script.js
Beachten Sie, dass die Suche in Git standardmäßig zwischen Groß- und Kleinschreibung unterscheidet. Verwenden Sie die Option -i für eine Suche, die die Groß-/Kleinschreibung ignoriert:
git log --grep="function" -i
Diese Suchfunktionen sind unglaublich nützlich, wenn Sie herausfinden wollen, wann eine bestimmte Änderung eingeführt oder ein Bug behoben wurde.
Erstellen von Statistiken aus dem Log
Git kann durch Statistiken wertvolle Einblicke in die Historie Ihres Projekts geben. Lassen Sie uns einige Möglichkeiten erkunden, diese Statistiken zu generieren.
Um eine Zusammenfassung der Anzahl der Commits pro Autor zu sehen:
git shortlog -s -n
Dies zeigt eine Liste der Autoren, sortiert nach der Anzahl der Commits, mit der jeweiligen Anzahl neben jedem Namen.
Um zu sehen, wie viele Zeilen jeder Autor hinzugefügt und entfernt hat:
git log --author="Jane Doe" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "Hinzugefügte Zeilen: %s, Entfernte Zeilen: %s, Gesamtzeilen: %s\n", add, subs, loc }'
Ersetzen Sie "Jane Doe" durch den Namen des Autors, den Sie überprüfen möchten.
Um zu sehen, welche Dateien sich am häufigsten geändert haben:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
Dies zeigt die Top 10 der am häufigsten geänderten Dateien.
Um die Gesamtzahl der Commits anzuzeigen:
git rev-list --count HEAD
Diese Statistiken können sehr nützlich sein, um die allgemeinen Entwicklungsmuster in Ihrem Projekt zu verstehen. Sie helfen dabei zu identifizieren, welche Teile des Projekts am aktivsten entwickelt werden, wer die aktivsten Mitwirkenden sind und wie das Projekt im Laufe der Zeit gewachsen ist.
Denken Sie daran: Statistiken sind zwar informativ, erzählen aber nicht die ganze Geschichte. Die Anzahl der Commits oder der geänderten Zeilen korreliert nicht zwangsläufig mit der Bedeutung oder Qualität der Beiträge.
Zusammenfassung
Herzlichen Glückwunsch, Git-Historiker! Sie haben soeben die Möglichkeiten der Git-Historie und des Log-Managements freigeschaltet. Lassen Sie uns die wichtigsten Konzepte rekapitulieren:
- Grundlegende Log-Nutzung: Sie haben gelernt, wie Sie die Commit-Historie Ihres Projekts mit
git loganzeigen. - Formatieren der Log-Ausgabe: Sie haben entdeckt, wie Sie die Log-Ausgabe anpassen können, um genau die benötigten Informationen zu erhalten.
- Filtern des Logs nach Datum: Sie haben gesehen, wie Sie sich auf Commits innerhalb bestimmter Zeiträume konzentrieren können.
- Suche im Log nach spezifischen Änderungen: Sie haben leistungsstarke Techniken gelernt, um herauszufinden, wann bestimmte Änderungen eingeführt wurden.
- Erstellen von Statistiken aus dem Log: Sie haben Wege erkundet, um Erkenntnisse über die Entwicklungsmuster Ihres Projekts zu gewinnen.
Diese Fähigkeiten werden sich bei der Arbeit an größeren Projekten als unschätzbar erweisen. Egal, ob Sie einen Bug aufspüren, die Entwicklung eines Features überprüfen oder die allgemeinen Trends in Ihrem Projekt verstehen wollen – der Befehl git log und seine vielfältigen Optionen werden Ihre treuen Begleiter sein.
Denken Sie daran: Die Git-Historie ist nicht nur ein Protokoll dessen, was passiert ist – sie ist ein mächtiges Werkzeug, um Ihr Projekt zu verstehen und zu verbessern. Nutzen Sie sie klug, und sie wird Sie zu einem besseren Entwickler machen.
Erkunden und experimentieren Sie weiter mit diesen Befehlen. Je vertrauter Sie mit der Navigation durch die Historie Ihres Projekts werden, desto mehr wertvolle Erkenntnisse werden Sie daraus gewinnen können. Viel Spaß bei Ihren Zeitreisen in Ihren Git-Repositories!



