So überprüfen Sie, ob ein Git-Commit rückgängig gemacht wurde

GitGitBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie, wie Sie feststellen können, ob ein Git-Commit rückgängig gemacht wurde. Wir werden untersuchen, wie Sie den Befehl git log verwenden können, um Rückgängig-Machen-Commits (Revert-Commits) zu finden, und dann git show nutzen, um die Details dieser Rückgängig-Machungen zu überprüfen. Schließlich werden wir nicht rückgängig gemachte Commits betrachten, um den Unterschied in ihrer Historie und ihrem Inhalt zu verstehen. Diese praktische Übung führt Sie durch die Erstellung einer Beispielprojekthistorie, einschließlich eines Commits, der später rückgängig gemacht wird, und ermöglicht es Ihnen, die Techniken zum Identifizieren und Überprüfen von rückgängig gemachten Commits zu üben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560064{{"So überprüfen Sie, ob ein Git-Commit rückgängig gemacht wurde"}} git/commit -.-> lab-560064{{"So überprüfen Sie, ob ein Git-Commit rückgängig gemacht wurde"}} git/diff -.-> lab-560064{{"So überprüfen Sie, ob ein Git-Commit rückgängig gemacht wurde"}} git/log -.-> lab-560064{{"So überprüfen Sie, ob ein Git-Commit rückgängig gemacht wurde"}} end

Führen Sie git log aus, um Rückgängig-Machen-Commits (Revert-Commits) zu finden

In diesem Schritt lernen wir, wie man git log verwendet, um Commits zu finden, die rückgängig gemacht wurden. Ein Commit rückgängig zu machen bedeutet, einen neuen Commit zu erstellen, der die Änderungen eines früheren Commits rückgängig macht. Dies ist nützlich, wenn Sie einen Fehler gemacht haben und ihn einfach rückgängig machen möchten, ohne die Historie des ursprünglichen Commits zu verlieren.

Zunächst stellen wir sicher, dass wir uns in unserem Projektverzeichnis befinden. Öffnen Sie Ihr Terminal und navigieren Sie zum Verzeichnis my-time-machine:

cd ~/project/my-time-machine

Jetzt erstellen wir einige Commits, um eine Projekthistorie zu simulieren, einschließlich eines Commits, den wir später rückgängig machen werden.

Erstellen Sie die erste Datei:

echo "Initial content" > file1.txt
git add file1.txt
git commit -m "Add file1"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master (root-commit) a1b2c3d] Add file1
 1 file changed, 1 insertion(+)
 create mode 100644 file1.txt

Jetzt fügen wir noch etwas Inhalt hinzu und erstellen einen weiteren Commit:

echo "Adding more content" >> file1.txt
git add file1.txt
git commit -m "Add more content to file1"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master 4e5f6g7] Add more content to file1
 1 file changed, 1 insertion(+)

Als Nächstes erstellen wir einen Commit, den wir später rückgängig machen werden:

echo "This commit will be reverted" > file2.txt
git add file2.txt
git commit -m "Add file2 (will be reverted)"

Sie sollten eine Ausgabe ähnlich dieser sehen:

[master 8h9i0j1] Add file2 (will be reverted)
 1 file changed, 1 insertion(+)
 create mode 100644 file2.txt

Jetzt machen wir den letzten Commit rückgängig. Wir können git revert HEAD verwenden, um den neuesten Commit rückgängig zu machen:

git revert HEAD --no-edit

Das Flag --no-edit teilt Git mit, die Rückgängig-Machen-Commit-Nachricht automatisch zu erstellen, ohne einen Editor zu öffnen. Sie sollten eine Ausgabe ähnlich dieser sehen:

[master k2l3m4n] Revert "Add file2 (will be reverted)"
 1 file changed, 1 deletion(-)
 delete mode 100644 file2.txt

Toll! Wir haben jetzt einen Commit erstellt, der die Änderungen des Commits "Add file2 (will be reverted)" rückgängig macht.

Jetzt verwenden wir git log, um unsere Commit-Historie anzuzeigen und den Rückgängig-Machen-Commit zu finden:

git log --oneline

Sie sollten eine Ausgabe ähnlich dieser sehen:

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

Beachten Sie die Commit-Nachricht "Revert 'Add file2 (will be reverted)'". Dies zeigt deutlich an, dass dieser Commit ein Rückgängig-Machen eines früheren Commits ist. Die Verwendung von git log mit dem Flag --oneline ist eine schnelle Möglichkeit, eine Zusammenfassung Ihrer Commit-Historie zu sehen und Rückgängig-Machen-Commits anhand ihrer Nachricht zu identifizieren.

Verwenden Sie git show, um die Rückgängig-Machung zu überprüfen

In diesem Schritt verwenden wir den Befehl git show, um die Details des Rückgängig-Machen-Commits (Revert-Commits) zu untersuchen und zu überprüfen, ob er die Änderungen des ursprünglichen Commits korrekt rückgängig gemacht hat. Der Befehl git show ist ein leistungsstarkes Werkzeug zum Untersuchen von Git-Objekten, einschließlich Commits, Tags und Blobs.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden:

cd ~/project/my-time-machine

Jetzt benötigen wir den Commit-Hash des Rückgängig-Machen-Commits. Sie können diesen aus der Ausgabe von git log --oneline aus dem vorherigen Schritt erhalten. Es ist der erste aufgelistete Commit. Beispielsweise, wenn Ihre git log --oneline-Ausgabe wie folgt war:

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

Der Commit-Hash für den Rückgängig-Machen-Commit ist k2l3m4n. Hinweis: Ihr Commit-Hash wird anders sein.

Verwenden Sie jetzt git show gefolgt vom Commit-Hash Ihres Rückgängig-Machen-Commits. Ersetzen Sie YOUR_REVERT_COMMIT_HASH durch den tatsächlichen Hash aus Ihrer git log --oneline-Ausgabe:

git show YOUR_REVERT_COMMIT_HASH

Beispielsweise, wenn wir den Beispiel-Hash k2l3m4n verwenden:

git show k2l3m4n

Sie sollten eine Ausgabe ähnlich dieser sehen:

commit k2l3m4n (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Revert "Add file2 (will be reverted)"

    This reverts commit 8h9i0j1.

diff --git a/file2.txt b/file2.txt
deleted file mode 100644
index 8b1a99c..0000000
--- a/file2.txt
+++ /dev/null
@@ -1 +0,0 @@
-This commit will be reverted

Lassen Sie uns diese Ausgabe analysieren:

  • Der erste Teil zeigt die Commit-Details: den Commit-Hash, den Autor, das Datum und die Commit-Nachricht. Beachten Sie, dass die Nachricht ausdrücklich angibt, dass ein bestimmter Commit (identifiziert durch seinen Hash) rückgängig gemacht wird.
  • Der diff-Abschnitt zeigt die Änderungen, die durch diesen Commit vorgenommen wurden. In diesem Fall zeigt er, dass file2.txt gelöscht wurde (deleted file mode 100644). Dies bestätigt, dass der Rückgängig-Machen-Commit die Erstellung von file2.txt erfolgreich rückgängig gemacht hat.

Die Verwendung von git show ermöglicht es Ihnen, die genauen Änderungen zu untersuchen, die durch jeden Commit in Ihrer Historie vorgenommen wurden. Dies ist unglaublich nützlich, um die Historie Ihres Projekts zu verstehen und zu überprüfen, ob Rückgängig-Machungen oder andere Änderungen korrekt angewendet wurden.

Testen von nicht rückgängig gemachten Commits

In den vorherigen Schritten haben wir mehrere Commits erstellt und dann einen von ihnen rückgängig gemacht. Wir haben git log verwendet, um die Historie zu sehen, und git show, um den Rückgängig-Machen-Commit zu untersuchen. Jetzt überprüfen wir, ob die Commits, die nicht rückgängig gemacht wurden, noch existieren und die erwarteten Änderungen enthalten.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project/my-time-machine befinden:

cd ~/project/my-time-machine

Denken Sie an unsere Commit-Historie aus git log --oneline:

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

Die Commits "Add file1" und "Add more content to file1" wurden nicht rückgängig gemacht. Verwenden wir git show, um den Commit "Add more content to file1" zu untersuchen und seine Änderungen zu sehen.

Finden Sie den Commit-Hash für "Add more content to file1" aus Ihrer git log --oneline-Ausgabe. Im obigen Beispiel ist es 4e5f6g7. Denken Sie daran, Ihren tatsächlichen Commit-Hash zu verwenden.

Verwenden Sie jetzt git show mit diesem Commit-Hash:

git show YOUR_MORE_CONTENT_COMMIT_HASH

Beispielsweise, wenn wir den Beispiel-Hash 4e5f6g7 verwenden:

git show 4e5f6g7

Sie sollten eine Ausgabe ähnlich dieser sehen:

commit 4e5f6g7
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:02:00 2023 +0000

    Add more content to file1

diff --git a/file1.txt b/file1.txt
index 8b1a99c..a1b2c3d 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1,2 @@
 Initial content
+Adding more content

Diese Ausgabe zeigt die Details des Commits, und der diff-Abschnitt zeigt deutlich, dass eine Zeile "Adding more content" zu file1.txt hinzugefügt wurde. Dies bestätigt, dass dieser Commit und seine Änderungen immer noch Teil der Projekthistorie sind, auch wenn ein späterer Commit rückgängig gemacht wurde.

Dies zeigt einen wichtigen Aspekt von Git: Das Rückgängig-Machen eines Commits erstellt einen neuen Commit, der die Änderungen rückgängig macht. Es löscht den ursprünglichen Commit nicht aus der Historie. Dies ist wichtig, da es einen vollständigen Verlauf aller Änderungen aufrechterhält und es Ihnen ermöglicht, die vollständige Entwicklung Ihres Projekts zu verstehen.

Sie können ähnlich git show mit dem Hash des Commits "Add file1" (a1b2c3d im Beispiel) verwenden, um die ursprüngliche Erstellung von file1.txt zu sehen.

Indem Sie git log verwenden, um die Historie zu sehen, und git show, um einzelne Commits zu untersuchen, können Sie effektiv durch die Zeitlinie Ihres Projekts navigieren und verstehen, auch wenn Commits rückgängig gemacht wurden.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man rückgängig gemachte Commits in einem Git-Repository identifiziert. Wir haben begonnen, indem wir eine Projekthistorie mit mehreren Commits erstellt haben, darunter einen speziell für die Rückgängigmachung vorgesehenen. Anschließend haben wir den Befehl git revert HEAD --no-edit verwendet, um einen neuen Commit zu erstellen, der die Änderungen des vorherigen Commits rückgängig macht. Dieser Prozess hat gezeigt, dass das Rückgängig-Machen eines Commits einen neuen Commit zur Historie hinzufügt, anstatt den ursprünglichen zu entfernen.

Wir werden weiterhin untersuchen, wie man git log verwendet, um diese Rückgängig-Machen-Commits zu finden, und git show, um ihren Inhalt zu überprüfen, und sie von nicht rückgängig gemachten Commits zu unterscheiden.