Prendi il seguente caso:
Ho un po 'di lavoro in una sezione tematica e ora sono pronto per ricollegarmi al master:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Eseguo l'unione dal master, risolvo i conflitti e ora ho:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Ora, l'unione mi ha richiesto del tempo, quindi faccio un altro recupero e noto che il ramo principale remoto ha nuove modifiche:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Se provo 'git rebase origin / master' dal master, sono costretto a risolvere nuovamente tutti i conflitti e perdo anche il commit di unione:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* eb3b733 3
| * b62cae6 2 [topic]
|/
* 38abeae 1
Esiste un modo chiaro per reimpostare il commit di unione in modo da finire con una cronologia come quella mostrata di seguito?
* 51984c7 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | e7affba 4 [origin/master]
* | eb3b733 3
|/
* 38abeae 1
git config --global pull.rebase preserve
per preservare sempre i merge di commit durante un rebase
git --rebase-merges
alla fine sostituirà il vecchio git --preserve-merges
. Vedi cosa fa esattamente " rebase --preserve-merges
" (e perché?) Di
--preserve-merges
è deprecato. Usagit rebase --rebase-merges origin/master
git rebase --preserve-merges origin/master