Rückgängig machen eines Commits vor dem Push eines entfernten Repositorys in Git

Azhar Bashir Khan 6 Februar 2022
Rückgängig machen eines Commits vor dem Push eines entfernten Repositorys in Git

In diesem Tutorial lernen Sie, wie Sie einen Commit zurücksetzen, der nicht in das Remote-Repository in Git gepusht wurde, einem Versionskontrollsystem, das wir verwenden, um die Änderungen an Dateien in unserem Projektverzeichnis zu verfolgen.

In Git werden Commits verwendet, um die an Dateien vorgenommenen Änderungen nachzuverfolgen. Manchmal können wir die Änderungen der Dateien lokal festschreiben und später das Gefühl haben, dass diese Änderungen nicht mehr relevant sind.

Wir wollen diesen Commit jetzt zurücksetzen, anstatt ihn in das Remote-Repository zu pushen. Wir können diese Aufgabe des Zurücksetzens eines Commits, der noch nicht auf Remote gepusht wurde, mit dem Befehl git reset ausführen.

Rückgängig machen eine Commit vor dem Übertragen an ein entferntes Repository in Git

Wir verwenden Git in einer kollaborativen Entwicklungsumgebung, um die an Dateien vorgenommenen Änderungen zu verfolgen. Git erfüllt diese Aufgabe, indem es die Änderungen an den Dateien mithilfe von Commits verfolgt.

Wenn wir mit den an den Dateien vorgenommenen Änderungen zufrieden sind, übertragen wir die Änderungen in das Git-Repository unseres Projekts. In einem einfachen Git-Workflow fügen wir die Änderungen, nachdem wir sie getestet und abgeschlossen haben, dem Staging-Bereich hinzu. Wir verwenden dafür den Befehl git add.

Nachdem wir die Änderungen zum Staging-Bereich hinzugefügt haben, fahren wir nun fort, die Änderung in unser Git-Repository zu übertragen. Wir verwenden den Befehl git commit, um die Änderungen zu übernehmen.

Jeder Commit wird verwendet, um eine Momentaufnahme des Status des Repositorys sowie den Namen, den Zeitstempel und die Nachricht aufzuzeichnen. Wenn wir Änderungen mit dem Befehl git commit festschreiben, werden diese Änderungen an das lokale Git-Repository übertragen.

Dieses lokale Repository ist mit einem Remote-Git-Repository verknüpft. Anschließend schieben wir die Commits des lokalen Git-Repositorys in das Remote-Repository. Dazu verwenden wir den Befehl git push.

Bevor wir den Commit in das Remote-Repository verschieben, haben wir manchmal das Gefühl, dass der aktuelle Commit im lokalen Repository nicht mehr benötigt wird und wir ihn verwerfen möchten.

Um also den Commit aus dem lokalen Repository zu verwerfen, können wir den Befehl git reset verwenden. Angenommen, wir haben einen Commit-Verlauf wie folgt in unserem Git-Repository.

$ git log --oneline
453dcfc (HEAD -> master) minor change
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...

In der Commit-Historie befindet sich das Commit 453dcfc im lokalen Git-Repository, aber noch nicht im Remote-Repository. Die vorherigen Commits befinden sich ebenfalls im Remote-Repository.

Um also einen Commit zu verwerfen, der im lokalen Repository vorhanden ist und noch nicht in das Remote-Repository gepusht wurde, können wir den Befehl git reset wie folgt ausführen.

$ git reset --soft HEAD~1

Der obige Befehl git reset setzt den aktuellen HEAD um einen Commit zurück. Der Befehl git reset mit der Option --soft berührt nicht den Staging-Bereich und den Arbeitsbaum.

Es behält alle unsere geänderten Dateien als Changes to be commit, wie git status es ausdrücken würde, wie folgt.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   README.md

Wir können jetzt den Commit-Verlauf erneut überprüfen und feststellen, dass Commit 453dcfc nicht mehr vorhanden ist.

$ git log --oneline
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...

Wir haben gezeigt, wie man einen Commit zurücksetzt, der nicht in das Remote-Repository in Git gepusht wurde.

Weitere Informationen finden Sie unter diesen Links.

  1. git-reset
  2. Git-reset

Verwandter Artikel - Git Reset