Come avanzare rapidamente e aggiornare un ramo Git
Quando si lavora con i rami Git, è spesso necessario mantenere diversi rami come i rami “sviluppo”, “rilascio” o “staging”. Con Git, è facile eseguire il fast forward di un ramo per tenerlo aggiornato con un altro ramo, ad esempio aggiornando il ramo di rilascio per includere le modifiche sullo staging.
Avanzamento rapido di un ramo Git
In Git, i rami sono solo puntatori a un commit specifico, chiamato HEAD del ramo. Il ramo è semplicemente un’etichetta che può cambiare quando il ramo viene aggiornato con nuovi commit o unito a un altro.
Per unire insieme due rami divergenti, puoi usare git merge
. Di solito, questo crea un “commit di unione” che combina le cronologie dei due rami, come i commit da un ramo di funzionalità che vengono inseriti nel ramo principale con una richiesta di pull.
Tuttavia, se i due rami hanno la stessa storia, Git eseguirà una speciale unione veloce. Nell’esempio sopra, il release
ramo HEAD è incluso nella develop
cronologia di , il che significa che non è necessario un commit di unione. Al contrario, release
viene aggiornato per puntare a develop
.
Non esiste git fast-forward
un comando speciale per questo; è una semplice unione come qualsiasi altra. Durante l’unione, vuoi controllare il ramo che riceverà le modifiche. In questo caso, release
il ramo è in fase di aggiornamento, quindi controlliamo la versione:
git checkout release
Quindi possiamo unire il ramo di sviluppo in esso, che eseguirà l’avanzamento rapido:
git merge develop
Se stai utilizzando un client GUI Git, questo processo potrebbe essere più intuitivo. La maggior parte dei clienti avrà un’opzione per fare clic con il pulsante destro del mouse sul ramo obsoleto e aggiornarlo con quello su cui stai lavorando.
Rami remoti con inoltro rapido
Una cosa da notare è che l’avanzamento rapido aggiornerà solo il tuo repository locale. Dovrai inviare a Github per aggiornare il telecomando. Se stai utilizzando un client GUI, potresti vedere che l’etichetta per il repository remoto non è aggiornata fino a quando non esegui il push.
L’inoltro rapido del ramo non crea un commit, ma dovrebbe comunque attivare pipeline CI/CD come Github Actions. In caso contrario, esiste un’opzione per creare sempre un commit di unione:
git merge --no-ff
Ciò può anche essere utile in alcuni casi per mantenere una topologia di ramo più esplicita, in cui i rami delle caratteristiche saranno sempre separati dal ramo principale e creeranno un commit di unione quando vengono combinati. Per impostazione predefinita, se non hai modificato nulla sul ramo principale quando ti unisci nella funzionalità, Git avanzerà rapidamente il ramo principale invece di creare il solito commit di unione che potresti aspettarti. La --no-ff
bandiera impedirà tale comportamento.
In alternativa, se desideri tentare l’avanzamento rapido e fallire se è richiesto un commit di unione, puoi utilizzare il --ff-only
flag.
Lascia un commento