Git Rebase-Zweig mit zusammengeführten Kindern

8

Heute hatte ich ein Problem. Mein Teamkollege hat einen Zweig vom Master erstellt. Er entwickelte ein Merkmal in diesem Zweig und entwickelte danach zwei Unterfunktionen in Unterzweigen. Endlich machte er zwei Refactoring Commits für das Ganze. Also ...

%Vor%

In der Regel werden Feature-Branches neu erstellt, bevor No-Fast-Forward sie in den Master einfügt. Aber natürlich schlägt diese Rebase fehl. Rebased Feature-Zweig sah aus wie:

%Vor%

Natürlich Zeiger von C & amp; D wurde falsch, also bekomme ich auch zwei Zweigzweige, die "aus der Luft" wachsen. Ich verstehe, wie man es beheben kann, wenn Zweigzweige nicht in Feature zusammengeführt werden, aber zu diesem Zeitpunkt war ich verwirrt. Ich habe alles in der Rebased Recovery Branch ausgewählt und alles wieder zusammengeführt. Ist hier ein einfacher Weg, es zu tun?

    
everm1nd 04.04.2012, 17:59
quelle

2 Antworten

11

Beachten Sie, dass Sie eine git1.7.6 + für git rebase --preserve-merges benötigen, um ordnungsgemäß zu funktionieren.

  

Lange Rede, kurzer Sinn: Sie haben gerade eine Zusammenführung abgeschlossen, und jemand hat einen Commit durchgeführt, bevor Sie Ihren drückten. Die Lösung besteht darin, git auf die Zusammenführung aufmerksam zu machen, die Sie ausgeführt haben.

%Vor%

oder

%Vor%
  

Aber es gibt ein Problem, wenn Ihre Zusammenführung Konflikte hat, die Sie gelöst haben, werden sie von der Rebasemaschinerie nicht aufgehoben.
  Und am Ende lösen Sie die Konflikte wieder auf ... zumindest ist dies bei der Git-Version 1.7.5.4 der Fall.

(Das würde git rerere ) erfordern

    
VonC 20.11.2012, 12:42
quelle
2

Hast du jedes Commit einzeln per Hand genommen?

Führen Sie einfach git rebase -i master feature aus und schreiben Sie den Verlauf nach Belieben neu.

    
KurzedMetal 04.04.2012 18:38
quelle

Tags und Links