Tome el siguiente caso:
Tengo algo de trabajo en una rama temática y ahora estoy listo para volver a fusionarme con master:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Realizo la fusión de master, resuelvo los conflictos y ahora tengo:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Ahora, la fusión me llevó algo de tiempo, así que hago otra búsqueda y noto que la rama maestra remota tiene nuevos cambios:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Si intento 'git rebase origin / master' desde master, me veo obligado a resolver todos los conflictos nuevamente, y también pierdo el commit de fusión:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* eb3b733 3
| * b62cae6 2 [topic]
|/
* 38abeae 1
¿Hay una manera limpia de volver a crear la confirmación de fusión para que termine con un historial como el que muestro a continuación?
* 51984c7 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | e7affba 4 [origin/master]
* | eb3b733 3
|/
* 38abeae 1
git config --global pull.rebase preserve
para preservar siempre los compromisos de fusión durante un rebase
git --rebase-merges
finalmente reemplazará al antiguo git --preserve-merges
. Vea ¿Qué hace exactamente " rebase --preserve-merges
" Git (y por qué?)
--preserve-merges
es obsoleto. Usogit rebase --rebase-merges origin/master
git rebase --preserve-merges origin/master