Ecco come rebasefunziona:
git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
Supponiamo di avere
---o----o----o----o master
\---A----B <my branch>
I primi due comandi ... commit git checkout git rebase master
... controlla il ramo delle modifiche che desideri applicare al masterramo. Il rebasecomando prende i commit da <my branch>(che non si trovano in master) e li riapplica al capo di master. In altre parole, il genitore del primo commit <my branch>non è più un commit precedente nella masterstoria, ma l'attuale responsabile di master. I due comandi sono gli stessi di:
git rebase master <my branch>
Potrebbe essere più facile ricordare questo comando poiché entrambi i rami "base" e "modifica" sono espliciti.
. Il risultato della cronologia finale è:
---o----o----o----o master
\----A'----B' <my branch>
Gli ultimi due comandi ...
git checkout master
git merge <my branch>
... esegui un'unione di avanzamento rapido su cui applicare tutte le <my branch>modifiche master. Senza questo passaggio, il commit rebase non viene aggiunto a master. Il risultato finale è:
---o----o----o----o----A'----B' master, <my branch>
mastered <my branch>entrambi i riferimenti B'. Inoltre, da questo punto è sicuro eliminare il <my branch>riferimento.
git branch -d <my branch>
--cacheddurante il controllogit diff. link