Git wie man das letzte Commit zurückkehrt?

Git wie man das letzte Commit zurückkehrt?
Git ist ein effektives Tool, das Ihren Code im Auge behält. Und eines der großartigen Funktionen des Tools ist, dass Sie Ihren Verlauf problemlos überprüfen und zurückkehren können, wenn Sie einen Fehler gemacht haben. Erstellen wir eine Situation, in der Sie den letzten Commit zurückkehren und sehen können, wie der Befehl git revert funktioniert.

Wir werden mit dem Hinzufügen einiger Dateien beginnen. Im letzten Commit werden wir Dateien sowohl hinzufügen als auch löschen, um eine chaotische Situation zu erstellen. Dann werden wir vor dem Chaos wieder in den Staat zurückkehren.

Sie können einen Ordner namens /testen 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
Initialisierte leere Git -Repository in/user/zakh_eecs/_work/lerngit/git_revert/test/.Git/
$ echo x> file_1.txt
$ git add -a
$ git Commit -m "Hinzufügen von Datei_1 Hinzufügen.txt"
[Master (Root-Commit) 08CAF5D] Hinzufügen von Datei_1 Hinzufügen.txt
1 Datei geändert, 1 Einfügung (+)
Erstellen Sie den Modus 100644 Datei_1.txt
$ echo y> file_2.txt
$ git add -a
$ git Commit -m "Hinzufügen von Datei_2 Hinzufügen.txt"
[Master Ba18a2f] Hinzufügen von Datei_2 Hinzufügen.txt
1 Datei geändert, 1 Einfügung (+)
Erstellen Sie den Modus 100644 Datei_2.txt
$ echo z> file_3.txt
$ git add -a
$ Git Commit -m "Hinzufügen von Datei_3 Hinzufügen.txt"
[Master 97F09AD] Hinzufügen von Datei_3 Hinzufügen.txt
1 Datei geändert, 1 Einfügung (+)
Erstellen Sie den Modus 100644 Datei_3.txt
$ echo u> file_4.txt
$ git add -a
$ git Commit -m "Hinzufügen von Datei_4 Hinzufügen.txt"
[Master 9CAF084] Hinzufügen von Datei_4 Hinzufügen.txt
1 Datei geändert, 1 Einfügung (+)
Erstellen Sie den Modus 100644 Datei_4.txt
$ echo v> file_5.txt
$ git add -a
$ git Commit -m "Hinzufügen von Datei_5 Hinzufügen.txt"
[Master 3F228b2] Hinzufügen von Datei_5 Hinzufügen.txt
1 Datei geändert, 1 Einfügung (+)
Erstellen Sie den Modus 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 -Protokoll -Einmal
3F228B2 Hinzufügen von Datei_5.txt
9CAF084 Hinzufügen von Datei_4.txt
97F09AD Hinzufügen von Datei_3.txt
Ba18a2f Hinzufügen von Datei_2.txt
08CAF5D addieren Sie Datei_1.txt

Lassen Sie uns nun etwas Chaos erstellen, wir werden einige Dateien löschen und eine schlechte Datei hinzufügen.

$ rm File_2.txt
$ rm File_4.txt
$ echo w> my_bad_file.txt
$ git add -a
$ Git Commit -m "fügte und gelöschte Dateien hinzugefügt und ohne Überlegungen über Konsequenzen" hinzugefügt. "
[Master 879FBF8] fügte und löschte Dateien hinzu und löschte, ohne über Konsequenzen nachzudenken
3 Dateien geändert, 1 Einfügung (+), 2 Löschungen (-)
Löschen Sie den Modus 100644 Datei_2.txt
Löschen Sie den Modus 100644 Datei_4.txt
Erstellen Sie den Modus 100644 my_bad_file.txt

Dies ist der Zustand unseres Ordners:

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

Und dies der Zustand unserer Geschichte:

$ Git -Protokoll -Einmal
879FBF8 fügte und gelöschte Dateien hinzu und löschte, ohne über Konsequenzen nachzudenken
3F228B2 Hinzufügen von Datei_5.txt
9CAF084 Hinzufügen von Datei_4.txt
97F09AD Hinzufügen von Datei_3.txt
Ba18a2f Hinzufügen von Datei_2.txt
08CAF5D addieren Sie Datei_1.txt

Wir erkennen, dass wir nicht wollen, dass das letzte Commit 879FBF8. Daher verwenden wir den folgenden Befehl revert:

$ git kehrt 879fbf8 zurück

Es wird ein Textfenster für die Bearbeitung des automatischen Kommentars geöffnet:

REVENTEN "Fügen und gelöschte Dateien zurück, ohne über Konsequenzen zu denken"
Dies kehrt das Commit 879FBF849C4BD6FB9A377604D6355C76B92A832C um.
# Bitte geben Sie die Commit -Nachricht für Ihre Änderungen ein. Zeilen beginnen
# mit '#' wird ignoriert und eine leere Nachricht abbricht das Commit ab.
# Auf Branch Master
# Änderungen zu verpflichten:
# neue Datei: Datei_2.txt
# Neue Datei: Datei_4.txt
# gelöscht: my_bad_file.txt
#

Sie können den Kommentar ändern. Wir werden es so halten wie es ist. Sobald Sie das Kommentarfenster speichern, findet die Rückgabeaufgabe statt:

$ git kehrt 879fbf8 zurück
[Master 6E80F0E] kehren "hinzugefügt und gelöscht Dateien, ohne über Konsequenzen zu denken"
3 Dateien geändert, 2 Insertionen (+), 1 Löschung (-)
Erstellen Sie den Modus 100644 Datei_2.txt
Erstellen Sie den Modus 100644 Datei_4.txt
Löschen Sie den Modus 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 wie zuvor wieder in Folge. Alle Ergänzungen und Löschungen wurden zurückgekehrt. Lassen Sie uns das Protokoll überprüfen:

$ Git -Protokoll -Einmal
6E80F0E kehren zurück "fügte und gelöschte Dateien, ohne über die Konsequenzen nachzudenken."
879FBF8 fügte und gelöschte Dateien hinzu und löschte, ohne über Konsequenzen nachzudenken
3F228B2 Hinzufügen von Datei_5.txt
9CAF084 Hinzufügen von Datei_4.txt
97F09AD Hinzufügen von Datei_3.txt
Ba18a2f Hinzufügen von Datei_2.txt
08CAF5D addieren Sie Datei_1.txt

Es gibt ein neues Commit 6E80F0E. Alle Veränderungen, die Teil von waren 879fbf8 wurde rückgängig gemacht und dann verpflichtet 6E80F0E.

Warnung: Mit Git Reset Command können Sie auch Commits rückgängig machen. Aber im Reset -Fall (besonders hart zurückgesetzt) ​​hätte es die gelöscht 879fbf8 eng so, als hätte es nie passiert und es hätte keine gegeben 6E80F0E begehen. Mit einem Rückkehr -Befehl kann jeder die Änderungen sehen, die stattgefunden haben. Im RESET -Fall bleibt keine Spur übrig. Es ist also eine schlechte Idee, das Reset -Befehl in einem öffentlichen Repository zu verwenden, da dies zu Massenverwirrung führen kann. Die goldene Regel lautet - Verwenden Sie keinen Reset in öffentlichen Repositories, verwenden Sie Rückkehr, was sicherer ist.

Abschließend:

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

Weiteres Studium:

  • https: // git-scm.com/docs/git-revert
  • https: // git-scm.com/docs/git-reset
  • GIT: Lernen Sie die Versionskontrolle mit Git: Ein Schritt-für-Schritt-Anfängerleitfaden für Anfänger
  • Versionskontrolle mit GIT: leistungsstarke Tools und Techniken für die Entwicklung der kollaborativen Software
  • Pro Git, 2. Ausgabe