2012-11-22 7 views
5

Ich arbeitete an meinem lokalen Zweig, der einige Änderungen vornahm, und als ich fertig war, schob ich alles auf die entfernte Brach. Vor dem Zusammenführen der Branche mit Develop dachte ich, ich sollte eine Rebase machen, weil die anderen Jungs dort viel Code zusammengeführt hatten. Als ich die Rebase gemacht habe und einige Konflikte gelöst habe, bin ich in den entfernten Zweig gegangen. Leider war die Art und Weise, wie ich die Konflikte gelöst habe, falsch, und jetzt muss ich zurückgehen, bevor die Rebase passiert ist, und auch die entfernte Filiale in den neuen Zustand bringen.Git - Wie man eine Rebase, die an den entfernten Zweig (nicht Ursprung) geschoben wurde, rückgängig macht

Was ich versucht

  1. den Kopf zurücksetzen

    git --hard HEAD @ zurückgesetzt {x} // wobei x der Kopf kurz vor dem Unterfütterungsmaterial

Das funktioniert und macht die Änderungen in meinem lokalen Zweig wieder rückgängig, aber ich weiß nicht, worauf ich den Remote-Zweig einstellen soll, da es kein neues Commit erzeugt, das gedrängt werden kann o die Fernbedienung.

+2

Verwenden Sie das Flag '-f' mit Ihrem Push-Befehl. –

Antwort

4

Sie sollten nicht die Geschichte der Remote-Repositories neu zu schreiben, denn wenn

  1. Sie etwas schieben gebrochen
  2. Jemand zieht
  3. Sie Kraft-Push eine andere Geschichte

nicht würden Sie nur habe das Problem, das Durcheinander zu beheben, aber alle anderen, die die Änderungen vorgenommen haben. Also, es sei denn, Sie können sicher sein, dass niemand es gezogen hat, tun Sie keine Kraft-Push.

Stattdessen sollten Sie den zufällt verpflichten entweder

>> git revert [email protected]{y} # where [email protected]{y} is the faulty commit 

, wenn nur eine Festschreibung chaotisch ist, bei einer Zusammenführung.

Im Falle eines Fütterungsmaterial, das Sie mehrere Commits auf dem Master-Zweig transplatend

>> git revert --no-commit HEAD 
>> git revert --no-commit HEAD~1 
>> git revert --no-commit HEAD~2 
    ... 
>> git revert --no-commit [email protected]{x} 
>> git commit -m "Sorry folks for the big mess I made" 

tun müssen, wo alle HEAD~y sind die Commits zwischen [email protected]{x} und HEAD.

Dadurch werden alle betroffenen Commits in einem einzigen großen Commit wirksam rückgängig gemacht.

+0

Danke dafür, es hat wie ein Zauber funktioniert! Plus, du hattest recht, ich sollte keinen Zug erzwingen. – user1844566

Verwandte Themen