Setzen Sie ein Git-Repository nach Commit-ID zurück

John Wachira 15 Februar 2024
  1. Wechseln Sie vorübergehend zu einem Git-Commit
  2. Setzen Sie ein Git-Repository nach Commit-ID zurück
Setzen Sie ein Git-Repository nach Commit-ID zurück

In diesem Artikel wird das Zurücksetzen eines Git-Repositorys basierend auf der Commit-ID erläutert. Möglicherweise müssen wir zu einem älteren Commit zurückkehren, um seinen Zustand zu untersuchen, oder die Commits danach löschen.

Lassen Sie uns beide Szenarien diskutieren.

Wechseln Sie vorübergehend zu einem Git-Commit

Wir verwenden den Befehl git checkout, um vorübergehend zu einem älteren Commit zu wechseln, während wir die Commit-ID erwähnen.

$ git checkout <Commit ID>

Dieser Befehl trennt den HEAD unseres Repos (wir sind nicht auf einem Zweig ausgecheckt). In diesem Zustand können wir keine Commits vornehmen.

Wie unten gezeigt, müssen wir basierend auf dem Commit einen neuen Branch erstellen.

$ git switch -c <new-branch-name>

Wir können den obigen Befehl kombinieren, um dasselbe wie unten gezeigt zu tun.

$ git checkout -b <new-branch-name> <Commit ID>

Setzen Sie ein Git-Repository nach Commit-ID zurück

Wir verwenden den Befehl git reset mit dem Flag --hard, während wir die Commit-ID übergeben, zu der wir zurückkehren möchten. Führen Sie den folgenden Befehl aus.

$ git reset --hard <Commit ID>

Das Ausführen dieses Befehls löscht alle unsere letzten Commits bis zum erwähnten Commit. Der Befehl löscht auch alle nicht festgeschriebenen Änderungen in Ihrem Index.

Wenn Sie die Änderungen beibehalten möchten, gehen Sie wie folgt vor:

$ git stash
$ git reset --hard <Commit ID>
$ git stash pop

Wenn Sie das Remote-Repo aktualisieren möchten, verwenden Sie den unten stehenden Befehl git push.

$ git push -f

Seien Sie vorsichtig mit diesem Befehl, da er das Remote-Repo basierend auf Ihrem lokalen Repo überschreibt. Sehen wir uns ein Beispiel an.

Im folgenden Beispiel werden wir versuchen, unser Git-Repo Delftscopetech basierend auf einer Commit-ID zurückzusetzen. Lassen Sie uns den Befehl git log ausführen, um alle Commits in unserem Repo aufzulisten.

$ git log --oneline

Repo-Geschichte

Wie würden wir vorgehen, wenn wir zum Vierten Update zurückkehren wollten?

Wir führen den Befehl git reset im folgenden Kontext aus.

$ git reset --hard df90895
HEAD is now at df90895 Fourth Update

Die Ausgabe zeigt, dass unser HEAD nun beim Fourth Update ist. Wir können den Befehl git push ausführen, um die Änderungen in unser Remote-Repository zu pushen.

Wenn Sie das Zurücksetzen rückgängig machen möchten, gehen Sie wie folgt vor.

Zuerst führen wir den Befehl git reflog aus, um alle Referenzaktualisierungen in unserem Repo anzuzeigen.

$ git reflog

Git-Relog

Ihre Ausgabe wird ähnlich aussehen. Wir können unseren Reset bei HEAD@{0} sehen.

Um zurückzugehen, führen wir den Befehl git reset wie unten gezeigt aus.

$ git reset HEAD@{1}

Sehen wir uns jetzt unseren Commit-Verlauf an.

$ git log --oneline

Repo-Geschichte 2

Unser HEAD ist zurück beim Sixth Update.

Kurz gesagt, es ist sehr einfach, Ihr Git-Repo basierend auf der Commit-ID zurückzusetzen. Wenn Sie vorübergehend zu einem Commit wechseln möchten, verwenden Sie den Befehl git checkout.

Um zu einem bestimmten Commit zurückzukehren, verwenden Sie den Befehl git reset --hard und geben Sie den Commit-Hash an.

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 Reset