Commit in Git rückgängig machen
- Commit in Git rückgängig machen - Hard Reset
- Commit in Git rückgängig machen - Git zurücksetzen
- Commit in Git rückgängig machen - Soft Reset Git
- Commit in Git rückgängig machen - Hard Reset-Dateien wiederherstellen
Dieser Artikel soll uns eine Anleitung geben, wie wir das wiederherstellen können, was wir bei der Verwendung von Git-Commit nicht beabsichtigen. Git ist nicht so kompliziert, dass wir einen großen Prozess brauchen, um unser spezielles Problem anzugehen, aber es ist mehr als das Problem, das verursacht wird, so groß, dass unterschiedliche Techniken erforderlich sind, je nachdem, was wir haben und welches Ergebnis wir haben wollen.
Es gibt viele Aspekte von Git, die leicht zu verstehen sind, aber es ist viel einfacher und bemerkenswerter, dorthin zurückzukehren, wo wir vorher waren. Es ist einfacher, größere Änderungen in einem Repository rückgängig zu machen. Es ist ein kleiner beängstigender Moment, wenn wir nicht wissen, wie es mit Befehlen ausgeführt wird. Aber eigentlich ist es überraschend einfach, kleine Dinge wie Commit zu tun oder die Commits rückgängig zu machen.
Aber was würden Sie in diesem Fall tun, um Ihr unerwünschtes commit
rückgängig zu machen und dann Ihre neuen Änderungen zu commit
.
Nehmen wir an, wenn Sie einige Änderungen vorgenommen und die Änderungen dann festgeschrieben haben, gibt es zu diesem Zweck vier Methoden:
Commit in Git rückgängig machen - Hard Reset
Wenn Sie diese haben, ist 40 Ihr HEAD
und (42) der Status unserer Dateien.
(42)
38-39-40
↑
Head
Und Sie möchten Commit rückgängig machen 40 und möchten es nie wieder sehen und alle Änderungen in lokal geänderten Dateien löschen.
Wir werden den folgenden Befehl verwenden:
git reset --hard HEAD ~ 1
Ausgabe:
(42)
38-39
↑
Head
Jetzt ist 39 der HEAD
. Da wir im obigen Beispiel --hard
verwendet haben, werden Ihre Dateien jetzt auf den Zustand beim Commit-Head zurückgesetzt, was der 39.
Commit in Git rückgängig machen - Git zurücksetzen
Nehmen wir an, der letzte Commit 40 war keine große Sache, aber nur ein bisschen daneben. Jetzt wollen wir das Commit rückgängig machen, aber unsere Änderungen behalten. Ab hier wieder angefangen, mit 40 als HEAD
:
(42)
38-39-40
↑
Head
Anstatt den Parameter --hard
zu verwenden, verwenden wir den folgenden Befehl:
git reset HEAD ~ 1
Ausgabe:
(42)
38-39-40
↑
Head
Wie wir in beiden Fällen gesehen haben, definiert HEAD
nur den letzten Commit. Wenn wir einen git reset HEAD~1
ausführen, verschiebt der Befehl Git den HEAD
-Zeiger zurück auf einen Commit. Aber (es sei denn, Sie verwenden --hard
) lassen wir unsere Dateien so, wie sie vorher waren. Wir haben nichts dabei verloren.
Commit in Git rückgängig machen - Soft Reset Git
Um es einfacher zu machen, Sie können unser Commit sogar rückgängig machen, aber unsere Dateien und unseren Index mit den folgenden Mitteln belassen:
git reset --soft HEAD ~ 1
Dadurch werden nicht nur unsere Dateien dort belassen; es lässt sogar unseren Index dort allein. Wenn wir git status
ausführen, sehen wir, dass sich die gleichen Dateien wie zuvor im Index befinden. Tatsächlich werden wir nach diesem Befehl sehen, dass wir git commit
machen könnten und würden den vorherigen Commit wiederholen, den wir gerade hatten.
Commit in Git rückgängig machen - Hard Reset-Dateien wiederherstellen
Angenommen, wir machen einen Commit wie im ersten Optionsbeispiel rückgängig, stellen dann aber fest, dass wir ihn danach brauchten. Was ist jetzt zu tun?
Keine Sorge, es gibt immer noch einen Weg, es zurückzubekommen. Wir verwenden den Befehl git reflog
und sehen eine Liste von (unvollendeten) Commits, in die wir uns bewegt haben. Suchen Sie den zerstörten Commit und gehen Sie wie folgt vor:
git checkout -b BranchName CommitYouDestroyed
Wir haben dieses Commit jetzt wiederhergestellt. In Git werden Commits 90 Tage ab dem Tag, an dem sie gelöscht wurden, nicht gelöscht, sodass wir sie problemlos als Backup wieder in den Repositorys wiederherstellen können.
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn