Setzen Sie ein Git-Repository auf einen vorherigen Commit zurück

John Wachira 15 Februar 2024
  1. Vorübergehendes Rollback zu einem vorherigen Commit
  2. Unveröffentlichte Commits löschen
  3. Veröffentlichte Commits rückgängig machen
Setzen Sie ein Git-Repository auf einen vorherigen Commit zurück

Dieser Artikel beschreibt, wie Sie ein Git-Repository auf einen früheren Commit zurücksetzen können. Hier sind die drei Methoden, die wir behandeln werden.

  1. Vorübergehendes Rollback zu einem früheren Commit
  2. Löschen Sie unveröffentlichte Commits
  3. Veröffentlichte Commits rückgängig machen

Vorübergehendes Rollback zu einem vorherigen Commit

Unsere erste Methode beinhaltet die Verwendung des Befehls git checkout.

Auf diese Weise können wir zu einem früheren Git-Commit zurückkehren, ohne den Commit-Verlauf in unserem Zweig neu zu schreiben. Hier ist ein Beispiel.

Angenommen, dies ist unser Commit-Verlauf, wie kommen wir zurück zu drei Commits? (z.B. HEAD~3)

Commit-Verlauf

Wir können den Befehl git checkout ausführen, wie unten dargestellt.

$ git checkout HEAD~3

Detached mode

Wie oben zu sehen, befinden wir uns derzeit im getrennten Modus. Wir können Änderungen vornehmen, experimentieren und die Änderungen übernehmen, ohne dass dies Auswirkungen auf Zweige hat.

Seien Sie im Modus abgetrennter KOPF vorsichtig, da Sie die vorgenommenen Änderungen verlieren können. Um diese Änderungen beizubehalten, erstellen Sie einen neuen Zweig, wie unten gezeigt.

$ git checkout -b Detached

Sie können Ihre Filiale nach Belieben benennen.

Unveröffentlichte Commits löschen

Unveröffentlichte Änderungen sind einfach die Commits, die Sie noch nicht in das Remote-Repository übertragen haben.

Sie können die Commits löschen, um Ihr lokales Repository mit dem Befehl git reset auf einen früheren Zustand zurückzusetzen. Hier ist ein Beispiel.

Was wäre, wenn wir die drei Commits, die wir im obigen Abschnitt besprochen haben, hart löschen wollten, anstatt vorübergehend zu wechseln? Wie würden wir vorgehen?

Wir führen den Befehl git reset aus, um die drei Commits wie unten dargestellt endgültig zu löschen.

$ git reset --hard HEAD~3

Der obige Befehl beseitigt die drei Commits und alle nicht festgeschriebenen Änderungen. Stellen Sie sicher, dass Sie den Befehl git stash ausführen, wenn Sie Ihre nicht festgeschriebenen Änderungen beibehalten möchten.

Beachten Sie, dass diese Methode nur verwendet werden sollte, wenn Sie Ihre Änderungen nicht in das Remote-Repository übertragen haben, insbesondere wenn es sich um ein gemeinsam genutztes Repository handelt.

Veröffentlichte Commits rückgängig machen

Im obigen Abschnitt haben wir gesehen, wie Sie unveröffentlichte Commits löschen können. Was ist, wenn Sie die Commits bereits in das Remote-Repository gepusht haben?

Der Befehl git reset --hard ist destruktiv und kann die Zeitleiste Ihres Projekts durcheinanderbringen, wenn mehrere Entwickler an demselben Projekt arbeiten.

Der sicherste Weg, veröffentlichte Commits rückgängig zu machen, ist die Verwendung des Befehls git revert. Dadurch wird der Commit-Verlauf nicht neu geschrieben, sondern zurückgesetzt und ein neuer Commit erstellt.

Dadurch wird es für andere Entwickler einfacher zu verstehen, was passiert.

Um die drei Commits rückgängig zu machen, führen wir Folgendes aus:

$ git revert --no-commit HEAD~3..HEAD

drei Commits zurücksetzen

Das Flag --no-commit ermöglicht es uns, eine Commit-Nachricht für alle drei rückgängig gemachten Commits zu erstellen. Wenn Sie das Flag nicht einschließen, müssen Sie für jede Übergabe eine Commit-Nachricht erstellen, die unordentlich aussieht und Ihr Repository unübersichtlich macht.

Kurz gesagt gibt es drei Möglichkeiten, zu einem früheren Commit in Git zurückzukehren. Es hängt alles von der Definition der Umkehrung in Ihrem Fall ab.

Wenn Sie vorübergehend zu einem früheren Commit wechseln möchten, verwenden Sie den Befehl git checkout. Der Befehl git reset --hard sollte für unveröffentlichte Änderungen reserviert werden, während der Befehl git revert am besten für veröffentlichte Commits funktioniert.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Verwandter Artikel - Git Revert