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 il ramo HEAD è incluso in develop, il che significa che non è necessario un commit di unione. Invece, release viene aggiornato per puntare a develop.
Non c’è niente di speciale git fast-forward comando per questo; è una semplice unione come qualsiasi altra. Durante la fusione, vuoi controllare il ramo che sta per ricevere i cambiamenti. 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. IL –no-ff flag impedirà tale comportamento.
In alternativa, se desideri tentare l’avanzamento rapido e fallire se è richiesto un commit di unione, puoi utilizzare il file –ff-only bandiera.
How-To Geek è dove ti rivolgi quando vuoi che gli esperti spieghino la tecnologia. Dal nostro lancio nel 2006, i nostri articoli sono stati letti miliardi di volte. Voglio sapere di più?