• Home
  • Git – Come eseguire git rebase di master sul tuo feature branch

Capita spesso utilizzando git che il feature branch su cui si lavora non sia sincronizzato con il branch master e non si riesca ad eseguire una sincronizzazione a cause di conflitti.
Questo in genere avviene quando si prova a eseguire git rebase sul proprio feature branch, a risolvere i conflitti e a eseguire push dal ramo feature stesso al master, per poi accorgersi che master è fuori sincrono.
Insomma, un loop infinito.


SOLUZIONE

Inizializzare il rebase di master su feature branch

Portarsi sul feature branch da allineare con master. Eseguire il commit di tutte le modifiche qui presenti.

A questo punto, per inizializzare il rebase di master su feature branch, aprire una shell ed eseguire git fetch origin. Questo sincronizza il branch master con le ultime modifiche. In rarissimi casi, potrebbe avere senso, prima di procedere oltre, eseguire un  preventivo git pull su master.

Successivamente, assicurarsi di essere sul branch su cui si vuole eseguire il rebase di master ed eseguire git rebase origin/master  (eventualmente sostituire master con il nome del ramo del proprio progetto).


Risolvere i conflitti

Risolvere nel modo più opportuno i vari conflitti che si dovessero verificare.
Ad ogni risoluzione, lanciare git add NOMEFILE.

Una volta risolti tutti i conflitti, procedere con git rebase --continue o in alternativa git rebase --skip qualora git non veda modifiche nonostante la risoluzione (questo avviene ad esempio quando ci sono differenze di codifica, ma i file sono identici in tutto il resto).
Con –continue, git mostrerà il commento al commit in corso sull’editor di default. E’ possibile lasciare il commento così com’è o aggiornarlo.
Se si sta usando vi o vim come editor e ci si chiede come proseguire al termine della modifica del commento: premere ESC sulla tastiera, poi scrivere :x (o, in alternativa, :wq) e infine INVIO sulla tastiera.

Ripetere questa procedura per tutti i conflitti che si dovessero presentare nei commit successivi.


Push delle modifiche

Una volta completato il rebase, lanciare git push origin HEAD --force .

Questo comando si occupa di inoltrare il feature branch a remoto, forzandolo a riconoscere le modifiche come corrette.
Senza il flag –force, remote continuerà a credere che non sia sincronizzato, indicando quindi conflitti di unione.


Finito!

A questo punto si è esguito il git rebase di master su feature branch, rompendo il loop infinito.


Segui @andymnc (Andrea Manconi) su Twitter per essere sempre aggiornato su guide ed articoli


Condividi: