Als Entwickler auf php-src in der folgenden Situation vorhanden ich mich vor kurzem finden:Rebase auf Upstream-Änderungen mit nicht-trivialer Zusammenführung verpflichtet lokal
A B C
o---o---o version1
\
o---o-----o---o master
x y D E
o---o---o upstream/master
x y z
Also, wenn ich git push --dry-run upstream master version1
bekomme ich die typisch:
! [rejected] master -> master (fetch first)
Meine natürliche Reaktion ist die betroffene Filiale rebase und bewahren merge verpflichtet:
git fetch upstream
git rebase -p upstream/master
Es ist wichtig zu beachten, dass das ursprüngliche Merge-Commit nicht trivial war, da es so viele Änderungen zwischen dem Versionszweig und dem Master gibt; Es bedarf einer Anstrengung, um eine solche Zusammenführung zu lösen.
Die obige Rebase-Operation verursacht einen Zusammenführungskonflikt und ich muss es erneut lösen; Das ist fast genau der gleiche Job, den ich bereits gemacht habe.
Gibt es einen besseren Weg, dies zu tun? Oder habe ich eine offensichtliche Rebase-Option vergessen?
Haben Sie * Rebase? Ich rebase normalerweise auch, aber ich war auch in deiner Situation wo es einfach nicht machbar war und ging dann mit einem Standard fusionieren. – musiKk
Sicher, ich kann einfach 'D, E, M (z)' anstelle von 'D ', E'' drücken, aber ich ziehe es vor, die Geschichte so sauber wie möglich zu halten :) –
Ich höre dich. Es hängt von Ihrem Fall ab. Ich arbeitete an Zusammenführungen, die Stunden brauchten. Meine Liebe für eine saubere Geschichte reicht nur so weit. :) – musiKk