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?
Beachten Sie, dass Sie eine git1.7.6 + für git rebase --preserve-merges
benötigen, um ordnungsgemäß zu funktionieren.
rebase --preserve-merges --onto
hat vorher nicht funktioniert (" git rebase --preserve-merges --onto
behält Merges nicht bei ") rebase --preserve-merges
hatte in einigen Fällen Probleme:
%Vor%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.
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
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.