Come sviluppatore su PHP-src Recentemente mi trovo nella seguente situazione:Rebase su modifiche a monte con merge non banale, commette presenti localmente
A B C
o---o---o version1
\
o---o-----o---o master
x y D E
o---o---o upstream/master
x y z
Così, quando faccio git push --dry-run upstream master version1
ottengo il tipico:
! [rejected] master -> master (fetch first)
la mia risposta naturale è quello di rebase il ramo colpiti e preservare la fusione impegna:
git fetch upstream
git rebase -p upstream/master
È importante notare che il commit unione originale non era banale, perché ci sono così tante modifiche tra il ramo della versione e il master; ci vuole uno sforzo per risolvere una simile fusione.
Eseguire l'operazione di rebase sopra causa un conflitto di merge e devo risolverlo di nuovo; questo è quasi esattamente lo stesso lavoro che avevo già fatto.
C'è un modo migliore per farlo? O ho dimenticato un'opzione ovvia di rebase?
Avete * avere * per ribattere? Di solito ho anche rebase, ma sono stato anche nella tua situazione in cui non era fattibile e ho seguito una fusione standard. – musiKk
Certo, posso semplicemente premere 'D, E, M (z)' invece di 'D ', E'' ma preferisco mantenere la storia il più pulito possibile :) –
Ti sento. Dipende dal tuo caso. Ho lavorato su fusioni che hanno richiesto ore. Il mio amore per una storia pulita va solo lontano. :) – musiKk