Änderungen in einem bestimmten Git-Commit anzeigen

GitGitBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

Git ist ein leistungsstarkes Versionskontrollsystem, das Entwicklern hilft, Änderungen zu verfolgen, zusammenzuarbeiten und ihre Codebasis effektiv zu verwalten. Eine grundlegende Fähigkeit in Git ist die Möglichkeit, den Verlauf des Projekts zu inspizieren, um zu sehen, welche Änderungen wann und von wem vorgenommen wurden. In diesem Lab lernen Sie, wie Sie die Änderungen anzeigen, die in einem bestimmten Git-Commit eingeführt wurden. Dies ist unerlässlich, um die Entwicklung Ihres Projekts zu verstehen, Code zu überprüfen und Probleme zu beheben.

Erkunden des Commit-Verlaufs

Bevor Sie die Änderungen in einem bestimmten Commit anzeigen können, müssen Sie diesen Commit zuerst finden. Der Befehl git log wird verwendet, um den Commit-Verlauf eines Repositories anzuzeigen. Für dieses Lab wurde für Sie ein Beispiel-Git-Repository unter ~/project/git-demo erstellt.

Navigieren Sie zuerst in das Projektverzeichnis. Alle Befehle in diesem Lab sollten von diesem Verzeichnis aus ausgeführt werden.

cd ~/project/git-demo

Verwenden Sie nun den Befehl git log mit der Option --oneline, um eine kompakte Ansicht des Commit-Verlaufs zu erhalten. Dies zeigt Ihnen eine Liste aller Commits, jeweils mit ihrem eindeutigen Commit-Hash und ihrer Commit-Nachricht.

git log --oneline

Sie sollten eine Ausgabe ähnlich dieser sehen. Die Commit-Hashes auf Ihrem Bildschirm werden unterschiedlich sein, aber die Nachrichten werden dieselben sein.

a1b2c3d (HEAD -> master) Add application file
e4f5g6h Update README with project description
i7j8k9l Initial commit: Add README.md

Jede Zeile repräsentiert einen Commit. Die 7-stellige Zeichenkette am Anfang jeder Zeile (z. B. a1b2c3d) ist eine verkürzte Version des Commit-Hashes, der den Commit eindeutig identifiziert. Sie werden diese Hashes in den nächsten Schritten verwenden, um spezifische Commits zu inspizieren.

Anzeigen der Änderungen eines bestimmten Commits

Nachdem Sie eine Liste von Commits haben, können Sie den Befehl git show verwenden, um die Details und Änderungen eines bestimmten Commits anzuzeigen. Dieser Befehl zeigt die Metadaten des Commits (Autor, Datum, Nachricht) und den "Diff", der die exakten hinzugefügten oder entfernten Zeilen hervorhebt.

Betrachten wir den zweiten Commit mit der Nachricht "Update README with project description". Finden Sie seinen Commit-Hash in der Ausgabe des vorherigen Schritts.

Kopieren Sie den Hash und verwenden Sie ihn mit git show. Ersetzen Sie <commit-hash> durch den tatsächlichen Hash aus Ihrem Terminal.

git show <commit-hash>

Wenn der Hash für diesen Commit beispielsweise e4f5g6h war, würden Sie Folgendes ausführen:

git show e4f5g6h

Die Ausgabe wird ungefähr so aussehen:

commit e4f5g6h1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7
Author: LabEx <[email protected]>
Date:   ...

    Update README with project description

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 ## My Project
+
+This is a simple project to demonstrate Git.

Lassen Sie uns die Ausgabe aufschlüsseln:

  • Commit-Metadaten: Die ersten Zeilen zeigen den vollständigen Commit-Hash, den Autor, das Datum und die Commit-Nachricht.
  • Diff-Bereich: Der Teil, der mit diff --git beginnt, ist der "Diff".
    • --- a/README.md und +++ b/README.md geben die "Vorher"- und "Nachher"-Versionen der Datei an.
    • Zeilen, denen ein + vorangestellt ist, sind Zeilen, die in diesem Commit hinzugefügt wurden.
    • Zeilen, denen ein - vorangestellt ist (in diesem Beispiel nicht vorhanden), sind Zeilen, die entfernt wurden.

Anzeigen von Änderungen für eine bestimmte Datei in einem Commit

Manchmal kann ein Commit mehrere Dateien ändern, aber Sie sind nur an den Änderungen einer bestimmten Datei interessiert. Sie können git show anweisen, nur die Änderungen für eine bestimmte Datei anzuzeigen, indem Sie den Dateipfad am Ende des Befehls hinzufügen.

Betrachten wir den neuesten Commit mit der Nachricht "Add application file". Dieser Commit hat die Datei app.py hinzugefügt.

Holen Sie sich zuerst den Hash für den neuesten Commit aus Ihrer git log --oneline-Ausgabe. Führen Sie dann git show mit diesem Hash aus, gefolgt von -- und dem Dateinamen app.py.

git show app.py < latest-commit-hash > --

Wenn der neueste Commit-Hash beispielsweise a1b2c3d ist, würde der Befehl lauten:

git show a1b2c3d -- app.py

Die Ausgabe beschränkt sich nun auf die Änderungen, die in diesem Commit an app.py vorgenommen wurden.

commit a1b2c3d...
Author: LabEx <[email protected]>
Date:   ...

    Add application file

diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")

Beachten Sie, dass die Ausgabe viel kürzer ist und nur den Diff für app.py enthält. Die Zeile new file mode 100644 zeigt an, dass diese Datei in diesem Commit erstellt wurde.

Vergleichen von zwei Commits

Während git show zum Anzeigen der Änderungen innerhalb eines einzelnen Commits dient, können Sie git diff verwenden, um die kumulativen Änderungen zwischen zwei beliebigen Commits anzuzeigen. Dies ist nützlich, um alle Änderungen zwischen zwei Zeitpunkten zu sehen, z. B. zwischen zwei Releases.

Vergleichen wir den ersten Commit und den neuesten Commit, um alle bisher im Projekt vorgenommenen Änderungen zu sehen. Sie benötigen die Commit-Hashes für den ersten Commit ("Initial commit: Add README.md") und den letzten Commit ("Add application file").

Verwenden Sie den Befehl git diff mit den beiden Hashes.

git diff <first-commit-hash> <last-commit-hash>

Wenn Ihr erster Commit-Hash beispielsweise i7j8k9l und Ihr letzter a1b2c3d ist:

git diff i7j8k9l a1b2c3d

Die Ausgabe zeigt einen kombinierten Diff aller Änderungen, die zwischen diesen beiden Commits aufgetreten sind.

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 ## My Project
+
+This is a simple project to demonstrate Git.
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")

Diese Ausgabe zeigt sowohl die Aktualisierung von README.md als auch die Erstellung von app.py und gibt Ihnen ein vollständiges Bild der Entwicklung des Projekts zwischen diesen beiden Punkten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Verlauf eines Git-Repositorys navigieren und Änderungen inspizieren. Sie haben geübt, git log zum Auflisten von Commits, git show zum Anzeigen der Details und Änderungen innerhalb eines einzelnen Commits (sowohl für den gesamten Commit als auch für eine bestimmte Datei) und git diff zum Vergleichen der Unterschiede zwischen zwei Commits zu verwenden. Diese Befehle sind grundlegend für das Verständnis von Codeänderungen, das Debugging und die effektive Zusammenarbeit in jedem Git-basierten Projekt.