Wie kann ich ein `git commit` lokal und auf einem Remote nach `git push` rückgängig machen

Lesezeit: 5 Minuten

Wie kann ich ein git commit lokal und auf einem
michael

Ich habe durchgeführt git commit gefolgt von einem git push. Wie kann ich diese Änderung sowohl in lokalen als auch in Remote-Repositories rückgängig machen?

$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date:   Tue Jun 11 12:24:23 2011 -0700

1647274688 964 Wie kann ich ein git commit lokal und auf einem
Alexander Gross

git reset --hard HEAD~1
git push -f <remote> <branch>

(Beispiel Push: git push -f origin bugfix/bug123)

Dadurch wird der letzte Commit rückgängig gemacht und der aktualisierte Verlauf auf die Fernbedienung übertragen. Sie müssen die passieren -f weil Sie den Upstream-Verlauf in der Fernbedienung ersetzen.

  • Alternativ verwenden git reset --hard <the-sha-you-want-to-return-to>.

    – Alexander Gross

    23. Juni 2011 um 19:03 Uhr


  • Die Referenz heißt HEAD (Groß-/Kleinschreibung beachten)

    – weiß nicht

    23. Juni 2011 um 19:36 Uhr

  • Seien Sie auch vorsichtig – AFAIK sollten Sie dies nicht tun, wenn andere Leute aus dem Repo gezogen haben.

    – Amadan

    15. August 2013 um 0:44 Uhr

  • @BipinVayalu Es wirkt sich auf den Zweig aus, in dem Sie sich gerade befinden. Genauer gesagt der KOPF. Der HEAD wird meistens an einen Branch “angehängt” (zeigt auf einen Branch-Namen anstatt direkt auf einen Commit). Im Allgemeinen wirkt sich dies auf den Zweig aus, auf den HEAD zeigt. Verwenden git log --decorate --oneline um herauszufinden, wohin dein KOPF zeigt.

    – Alexander Gross

    29. April 2014 um 9:51 Uhr

  • git reset HEAD~1 wenn Sie nicht möchten, dass Ihre Änderungen weg sind (nicht bereitgestellte Änderungen). Ändern, verpflichten und erneut pushen git push -f [origin] [branch]

    – Softvar

    25. Juni 2014 um 13:41 Uhr


Führen Sie im Allgemeinen einen “inversen” Commit durch, indem Sie Folgendes verwenden:

git revert 364705c

Senden Sie es dann wie gewohnt an die Fernbedienung:

git push

Dadurch wird der Commit nicht gelöscht: Es wird ein zusätzlicher Commit erstellt, der alles rückgängig macht, was der erste Commit getan hat. Alles andere, nicht wirklich ungefährlich, vor allem wenn die Änderungen bereits propagiert wurden.

  • Dies ist eine sicherere (also wahrscheinlich bessere) Antwort als die von Alexander Groß (die gewählte Antwort).

    – Graeck

    13. September 2013 um 23:32 Uhr

  • @Graeck Jede der Lösungen hat ihre Auswirkungen und Vorzüge.

    – Alexander Gross

    13. Dezember 2013 um 13:55 Uhr

  • Dies sollte die akzeptierte Antwort sein, es ist eine bewährte Methode, den Verlauf niemals zu überschreiben, noch mehr, wenn Sie mit einem Team zusammenarbeiten. git reset wird nur akzeptiert, wenn Sie die Änderungen noch nicht auf den Server übertragen haben.

    – José Alexander Ibarra

    24. April 2014 um 19:53 Uhr

  • @JosueIbarra Ich bin in allen Fällen anderer Meinung. Ja, in den meisten Fällen sollten Sie den Verlauf nicht überschreiben. Ich glaube jedoch, dass es legitime Fälle gibt, in denen Sie dies unbedingt tun sollten. Zum Beispiel, Sie übergeben versehentlich Ihre Secrets-Datei und schieben sie hoch. Das sollte nicht im Git-Repo stehen. Sie können es also schnell mit der akzeptierten Antwort hier entfernen.

    – bfcoder

    25. April 2014 um 19:31 Uhr

  • @bfcoder Wenn Sie ein “Geheimnis” in ein Remote-Repo verschoben haben, ist es kein Geheimnis mehr. Und die richtige Lösung besteht darin, ein neues Geheimnis zu schaffen und nicht zu versuchen, Ihren Fehler zu verbergen.

    – Carl-Emil Kjellstrand

    3. Dezember 2014 um 14:46 Uhr


Wie kann ich ein git commit lokal und auf einem
kmonsoor

Zunächst einmal entspannen.

“Nichts steht unter unserer Kontrolle. Unsere Kontrolle ist reine Illusion.”, “Irren ist menschlich”

Ich verstehe, dass Sie Ihren Code unbeabsichtigt verschoben haben remote-master. DAS wird in Ordnung sein.

1. Holen Sie sich zunächst die SHA-1 Wert des Commit, das Sie zurückzugeben versuchen, z. B. Commit in den Master-Zweig. Führen Sie dies aus:

git log

Sie werden eine Reihe von “f650a9e398ad9ca606b25513bd4af9fe …” -ähnlichen Zeichenfolgen zusammen mit jedem der Commits sehen. Kopieren Sie diese Nummer aus dem Commit, das Sie zurückkommen möchte.

2. Geben Sie nun den folgenden Befehl ein:

git reset --hard your_that_copied_string_but_without_quote_mark

Sie sollten eine Meldung wie “HEAD is now at” sehen. du bist auf klar. Was es gerade getan hat, ist, diese Veränderung lokal widerzuspiegeln.

3. Geben Sie nun den folgenden Befehl ein:

git push -f

Sie sollten sehen, wie

“Warnung: push.default ist nicht gesetzt; sein impliziter Wert hat sich geändert in….. … Total 0 (delta 0), reused 0 (delta 0) … …your_branch_name -> master (forced update) .”

Jetzt sind Sie alle klar. Überprüfen Sie den Master erneut mit “git log”, Ihr fixed_destination_commit sollte ganz oben auf der Liste stehen.

Gerne (im Voraus ;))

AKTUALISIEREN:

Nun, die Änderungen, die Sie vorgenommen haben, bevor all dies begann, sind jetzt weg.
Wenn Sie diese harte Arbeit wieder zurückbringen möchten, ist dies möglich. Dank an Git-Relogund git Kirschpickel Befehle.

Dafür würde ich vorschlagen, bitte zu folgen dieses Blog oder dieser Beitrag.

  • Es ist eine gute Maßnahme, die Fernbedienung und den Branch auch anzugeben, wenn Sie “git push -f” ausführen, aber “git push -f” wird die meiste Zeit sowieso funktionieren

    – Robson

    5. Juni 2015 um 15:31 Uhr

git reset HEAD~1 wenn Sie nicht möchten, dass Ihre Änderungen weg sind (nicht bereitgestellte Änderungen). Ändern, verpflichten und erneut pushen git push -f [origin] [branch]

Versuchen Sie es mit

git reset --hard <commit id> 

Bitte beachten Sie: Hier ist die Commit-ID die ID des Commits, zu dem Sie gehen möchten, aber nicht die ID, die Sie zurücksetzen möchten. das war der einzige punkt wo ich auch hängen blieb.

dann drücken

git push -f <remote> <branch>

1647274689 513 Wie kann ich ein git commit lokal und auf einem
Gemeinschaft

Sie können eine interaktive Rebase durchführen:

git rebase -i <commit>

Dadurch wird Ihr Standard-Editor angezeigt. Löschen Sie einfach die Zeile mit dem Commit, das Sie entfernen möchten, um diesen Commit zu löschen.

Sie benötigen natürlich Zugriff auf das Remote-Repository, um diese Änderung auch dort anzuwenden.

Siehe diese Frage: Git: Entfernen ausgewählter Commits aus dem Repository

Wie kann ich ein git commit lokal und auf einem
MicRum

Alternative:

git push origin +364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8^:master

Erzwingen Sie den Master-Zweig des Ursprungs-Remote-Repositorys zum übergeordneten Element des letzten Commit

1002310cookie-checkWie kann ich ein `git commit` lokal und auf einem Remote nach `git push` rückgängig machen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy