1103 Stimmen

Zurücksetzen der Fernbedienung auf eine bestimmte Übertragung

Ich möchte alle nach der Übergabe vorgenommenen Änderungen verwerfen <commit-hash> . Also tat ich es:

git reset --hard <commit-hash>

Jetzt möchte ich das Gleiche mit meiner Fernbedienung machen. Wie kann ich das tun? Ich habe einige Commits (und Pushes) durchgeführt, nachdem <commit-hash> und ich möchte sie einfach alle loswerden. Ist nur etwas ging furchtbar und ich möchte es nicht noch schlimmer machen, als es ohnehin schon ist ;(

Ich möchte im Grunde mein Leben zurückspulen origin/master à <commit-hash>

17voto

Shailesh Parmar Punkte 71

Ich hatte vor kurzem das gleiche Problem und konnte es in zwei Schritten lösen:

  1. Setzen Sie es auf lokales Git zurück mit git reset --hard HEAD~1 hier ist HEAD~1 die letzte Übertragung.
  2. Schieben Sie diese mit Kraft in den gewünschten Zweig git push -f origin main .

Das war's.

11voto

badbishop Punkte 968

Meine zwei Cent zu den vorherigen Antworten: wenn

git push --force <remote> <the-hash>:<the remote branch>

immer noch nicht funktioniert, sollten Sie die <your-remote-repo>.git/config des Empfangsbereichs der Datei:

[receive]
  #denyNonFastforwards = true
  denyNonFastforwards = false

11voto

Blessing Punkte 1750

Nehmen wir an, dass Ihr Zweig den Namen Meister sowohl lokal als auch aus der Ferne, und dass Ihr remote heißt Herkunft könnten Sie tun:

git reflog um die gesamte Commit-Historie zu erhalten, Ihre commit hash hat das folgende Format: e34e1ff

git reset --hard <commit-hash>

git push -f origin master

4voto

Joel Wiklund Punkte 1413

Sourcetree: Zurücksetzen von remote auf einen bestimmten Commit

  1. Wenn Sie einen fehlerhaften Commit auf Ihr Remote (origin/feature/1337_MyAwesomeFeature) gepusht haben, wie im folgenden Bild dargestellt

Go to Remotes

  1. Gehen Sie zu Fernbedienungen > Herkunft > Merkmal > 1337_MyAwesomeFeature
  2. Klicken Sie mit der rechten Maustaste und wählen Sie "Delete origin/feature/1337_MyAwesomeFeature" (oder ändern Sie den Namen, wenn Sie eine Sicherungskopie erstellen und Schritt 4 überspringen möchten).
  3. Klicken Sie auf "Löschen erzwingen" und "OK".

enter image description here enter image description here

  1. Wählen Sie Ihre ältere Übertragung und wählen Sie "Aktuelle Verzweigung auf diese Übertragung zurücksetzen".
  2. Wählen Sie den gewünschten Modus (Hart, wenn Sie Ihre letzten Änderungen nicht übernehmen wollen) und "OK".

enter image description here enter image description here

  1. Diese Übergabe in ein neues origin/feature/1337_MyAwesomeFeature verschieben enter image description here

  2. Ihr lokaler Funktionszweig und Ihr entfernter Funktionszweig befinden sich jetzt auf dem vorherigen (von Ihnen gewählten) Commit enter image description here

3voto

Gerardo Suarez Punkte 312

Wenn Ihr Zweig nicht der Entwicklungs- oder Produktionszweig ist, ist es am einfachsten, wenn Sie lokal auf einen bestimmten Commit zurücksetzen und von dort aus einen neuen Zweig erstellen. Sie können verwenden:

git checkout 000000

(wobei 000000 die Commit-ID ist, zu der Sie wechseln wollen) in Ihrem problematischen Zweig und erstellen Sie dann einfach einen neuen Zweig:

git remote add [Name_Ihrer_Remote]

Dann können Sie eine neue PR erstellen und alles wird gut funktionieren!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X