Come avanzare rapidamente e aggiornare un ramo Git

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 releaseramo HEAD è incluso nella developcronologia di , il che significa che non è necessario un commit di unione. Al contrario, releaseviene aggiornato per puntare a develop.

Non esiste git fast-forwardun comando speciale per questo; è una semplice unione come qualsiasi altra. Durante l’unione, vuoi controllare il ramo che riceverà le modifiche. In questo caso, releaseil 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-ffbandiera impedirà tale comportamento.

In alternativa, se desideri tentare l’avanzamento rapido e fallire se è richiesto un commit di unione, puoi utilizzare il --ff-onlyflag.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *