Git

Git Wie man den letzten Commit rückgängig macht?

Git Wie man den letzten Commit rückgängig macht?
Git ist ein effektives Tool, das Ihren Code verfolgt. Und eine der großartigen Funktionen des Tools ist, dass Sie Ihren Verlauf leicht überprüfen und zurückkehren können, wenn Sie einen Fehler gemacht haben. Lassen Sie uns eine Situation schaffen, in der Sie den letzten Commit rückgängig machen und sehen können, wie der Git-Revert-Befehl funktioniert.

Wir beginnen mit dem Hinzufügen einiger Dateien. Beim letzten Commit werden wir Dateien sowohl hinzufügen als auch löschen, um eine unordentliche Situation zu schaffen. Dann kehren wir zurück in den Zustand vor dem Chaos.

Sie können einen Ordner namens /test erstellen und die folgenden Befehle ausführen, um Git zu initialisieren und die oben beschriebene Situation zu erstellen (wir machen absichtlich separate Commits, um einen Verlauf zu erstellen):

$ git init
Initialisiertes leeres Git-Repository in /Users/zakh_eecs/_work/LearnGIT/git_revert/test/.git/
$ echo x > Datei_1.TXT
$ git add -A
$ git commit -m "Hinzufügen von Datei_1.TXT"
[master (root-commit) 08caf5d] Datei_1 hinzufügen.TXT
1 Datei geändert, 1 Einfügung (+)
Modus erstellen 100644 Datei_1.TXT
$ echo y > Datei_2.TXT
$ git add -A
$ git commit -m "Datei_2 hinzufügen file.TXT"
[master ba18a2f] Datei_2 hinzufügen.TXT
1 Datei geändert, 1 Einfügung (+)
Modus erstellen 100644 Datei_2.TXT
$ echo z > file_3.TXT
$ git add -A
$ git commit -m "Hinzufügen von file_3.TXT"
[master 97f09ad] Datei_3 hinzufügen.TXT
1 Datei geändert, 1 Einfügung (+)
Modus erstellen 100644 Datei_3.TXT
$ echo u > file_4.TXT
$ git add -A
$ git commit -m "Hinzufügen von file_4.TXT"
[master 9caf084] Datei_4 hinzufügen.TXT
1 Datei geändert, 1 Einfügung (+)
Modus erstellen 100644 Datei_4.TXT
$ echo v > Datei_5.TXT
$ git add -A
$ git commit -m "Hinzufügen von file_5.TXT"
[master 3f228b2] Datei_5 hinzufügen.TXT
1 Datei geändert, 1 Einfügung (+)
Modus erstellen 100644 Datei_5.TXT

Wenn wir unseren Ordner überprüfen, sollten wir die folgende Situation sehen:

$ ls -1
Datei_1.TXT
Datei_2.TXT
Datei_3.TXT
Datei_4.TXT
Datei_5.TXT

Wenn wir den Verlauf überprüfen, sollten wir die folgenden Dateien haben:

$ git log --oneline
3f228b2 Datei_5 hinzufügen.TXT
9caf084 Datei_4 hinzufügen.TXT
97f09ad Datei_3 hinzufügen.TXT
ba18a2f Datei_2 hinzufügen.TXT
08caf5d Datei_1 hinzufügen.TXT

Lassen Sie uns nun etwas Chaos anrichten, wir werden ein paar Dateien löschen und eine fehlerhafte Datei hinzufügen.

$rm Datei_2.TXT
$rm Datei_4.TXT
$ echo w > my_bad_file.TXT
$ git add -A
$ git commit -m "Dateien hinzugefügt und gelöscht, ohne an Konsequenzen zu denken"
[master 879fbf8] Dateien hinzugefügt und gelöscht, ohne an Konsequenzen zu denken
3 Dateien geändert, 1 Einfügung (+), 2 Löschungen (-)
Löschmodus 100644 Datei_2.TXT
Löschmodus 100644 file_4.TXT
Modus erstellen 100644 my_bad_file.TXT

Dies ist nun der Zustand unseres Ordners:

$ ls -1
Datei_1.TXT
Datei_3.TXT
Datei_5.TXT
my_bad_file.TXT

Und das ist der Zustand unserer Geschichte:

$ git log --oneline
879fbf8 Dateien hinzugefügt und gelöscht, ohne an Konsequenzen zu denken
3f228b2 Datei_5 hinzufügen.TXT
9caf084 Datei_4 hinzufügen.TXT
97f09ad Datei_3 hinzufügen.TXT
ba18a2f Datei_2 hinzufügen.TXT
08caf5d Datei_1 hinzufügen.TXT

Uns ist klar, dass wir den letzten Commit 879fbf8 nicht wollen. Wir verwenden also den folgenden Befehl zum Zurücksetzen:

$ git revert 879fbf8

Es öffnet sich ein Textfenster zum Bearbeiten des automatischen Kommentars:

"Hinzugefügte und gelöschte Dateien, ohne an Konsequenzen zu denken" zurücksetzen
 
Dadurch wird das Commit rückgängig gemacht 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Bitte geben Sie die Commit-Nachricht für Ihre Änderungen ein. Linien beginnend
# mit '#' wird ignoriert und eine leere Nachricht bricht den Commit ab.
# Auf Zweigmeister
# Zu verpflichtende Änderungen:
#       neue Datei:   file_2.TXT
#       neue Datei:   file_4.TXT
#       gelöscht:    my_bad_file.TXT
#

Sie können den Kommentar ändern. Wir werden es so lassen wie es ist. Sobald Sie das Kommentarfenster speichern, wird die Zurücksetzungsaufgabe ausgeführt:

$ git revert 879fbf8
[master 6e80f0e] Revert "Hinzugefügte und gelöschte Dateien, ohne an Konsequenzen zu denken"
3 Dateien geändert, 2 Einfügungen(+), 1 Löschung(-)
Modus erstellen 100644 Datei_2.TXT
Modus erstellen 100644 Datei_4.TXT
Löschmodus 100644 my_bad_file.TXT

Schauen wir uns jetzt unseren Ordner an:

$ ls -1
Datei_1.TXT
Datei_2.TXT
Datei_3.TXT
Datei_4.TXT
Datei_5.TXT

Unsere Dateien sind wieder in der Reihenfolge wie zuvor. Alle Hinzufügungen und Löschungen wurden rückgängig gemacht. Schauen wir uns das Protokoll an:

$ git log --oneline
 
6e80f0e Revert "Hinzugefügte und gelöschte Dateien, ohne an Konsequenzen zu denken"
879fbf8 Dateien hinzugefügt und gelöscht, ohne an Konsequenzen zu denken
3f228b2 Datei_5 hinzufügen.TXT
9caf084 Datei_4 hinzufügen.TXT
97f09ad Datei_3 hinzufügen.TXT
ba18a2f Datei_2 hinzufügen.TXT
08caf5d Datei_1 hinzufügen.TXT

Es gibt ein neues Commit 6e80f0e. Alle Änderungen, die Teil von . waren 879fbf8 wurde rückgängig gemacht und dann begangen in 6e80f0e.

Warnung: Mit dem Git-Reset-Befehl können Sie auch Commits rückgängig machen. Aber im Reset-Fall (insbesondere Hard-Reset) hätte es die gelöscht 879fbf8 begehen, als ob es nie passiert wäre und es keine gegeben hätte 6e80f0e verpflichten. Mit einem Zurücksetzen-Befehl kann jeder die vorgenommenen Änderungen sehen. Im Reset-Fall bleibt keine Spur zurück. Daher ist es keine gute Idee, den Reset-Befehl in einem öffentlichen Repository zu verwenden, da dies zu Massenverwirrung führen kann. Die goldene Regel lautet: Verwenden Sie kein Reset in öffentlichen Repositories, sondern verwenden Sie Revert, was sicherer ist.

Abschließend:

Der Git-Revert-Befehl ist eine schnelle und bequeme Möglichkeit, Ihre Fehler zu beheben. Es ist ein Befehl, den Sie sich merken sollten, wenn Sie regelmäßig mit Git . arbeiten.

Weitere Studie:

So verwenden Sie den APT-Paketmanager in Ubuntu 20.04 LTS
APT ist der Standard-Paketmanager auf Ubuntu/Debian-basierten Linux-Distributionen. In diesem Artikel zeige ich Ihnen, wie Sie den APT-Paketmanager un...
So installieren Sie John the Ripper unter Ubuntu
John The Ripper ist ein Open Source und sehr effizienter Passwort-Cracker von Open-Wall. Es wurde ursprünglich für Unix entwickelt, ist aber jetzt für...
So geben Sie Festplattenspeicher in Ubuntu frei
Manuelles Suchen und Bereinigen großer Dateien und ungenutzter Apps kann ermüdend sein. Diese Apps und Dateien können viel Platz auf Ihrer Festplatte ...