2012-06-21 6 views
9

Ich hatte ein lokales Thema Zweig einen Remote-Zweig auf dem git Repo basierte weg:Mit git, wie speichere ich eine Zweigstelle, nachdem die übergeordnete entfernte Zweigstelle rebasiert wurde?

1 - 2 - 4 - 5 - 9 - 11 master 
     \ 
     3 - 6 - 8 - 12 remote branch 
       \ 
       7 - 10 my topic 

Das Fern abzweigen kürzlich umbasiert wurde Meister:

1 - 2 - 4 - 5 - 9 - 11 master 
         \ 
      ?   3' - 6' - 8' - 12' remote branch 
       \ 
       7 - 10 my topic 

Ich mag mein Thema abzweigen rebase der Kopf der Remote-Filiale, damit ich meine Änderungen schließlich wieder in die Fernbedienung einbinden kann. Da jedoch der Hash-Wert des übergeordneten commit hat sich verändert, die versucht, ein einfaches

$ git rebase origin/remote_branch 

Ergebnisse in einer Reihe von Konflikten in Dateien, die ich noch nie berührt.

Gibt es etwas, was ich tun kann, um diese Zweige zu säubern?

Antwort

7

Einfach auf origin/remote_branch Rebasieren ist für git verwirrend, weil es versucht, veraltete Commits auf der Spitze von remote_branch zu rebasen, was zu doppelten Commits und Konflikten führt.

Stattdessen müssen Sie stecken ab und zu auf den neuen Punkt auf dem sechsten einem verbundenen begehen, mit der --onto Option

git rebase --onto <6'-SHA> <6-SHA> my-topic 

<6'-SHA> und <6-SHA> sind jeweils die neuen und alten IDs der begehen, wo my-topic war erstellt.

+1

Perfekt, tat genau das, was ich brauchte. Für jeden, der darüber stolperte, war ich in der Lage, die <6-SHA> zu bekommen, indem ich zurück in das 'git log' für meine Zweigstelle ging, bis ich das erste Commit vom Elternzweig fand. Ich habe dann den Autor, das Datum und die Commit-Nachricht verwendet, um das Protokoll des Ursprungs/remote_branch nach dem neuen Hash zu durchsuchen. –

Verwandte Themen