Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Informazioni su rami e fusioni in Git

Utilizziamo il comando git branch di Git per ottenere informazioni sui rami e scoprire quali sono stati sottoposti a merging e quali no.
Utilizziamo il comando git branch di Git per ottenere informazioni sui rami e scoprire quali sono stati sottoposti a merging e quali no.
Link copiato negli appunti

Visualizzazione dei rami

Parlando di ramificazioni abbiamo descritto l'utilizzo del comando git branch nei casi in cui si voglia creare un nuovo ramo o, al contrario, cancellare un ramo esistente. Lo stesso comando può essere utilizzato anche per eseguire delle semplici verifiche sui rami di un progetto, lanciato senza il passaggio di alcun parametro permette infatti di stampare a video una lista completa dei rami disponibili in un dato momento.

Figura 1. Elenco dei rami di un progetto.
Elenco dei rami di un progetto

Nell'immagine proposta vengono elencati due rami, quello master, creato dal sistema, e "fbk-4", generato per effettuare un intervento di manutenzione. Non viene giustamente elencato il ramo "vuln-1", creato per la risoluzione di una problematica di sicurezza; infatti, una volta corretta la vulnerabilità che lo ha reso necessario, esso è stato prima fuso con il master e poi eliminato perché non più necessario.

Facendo attenzione al modo in cui viene presentato l'output di git branch è possibile notare che il nome del ramo master è preceduto da un asterisco ("*"), questo simbolo viene utilizzato da Git per indicare all'utilizzatore il ramo corrente, cioè quello in cui egli si trova attualmente e verso il quale è rivolto il puntatore dei rami. L'asterisco funziona in sostanza come indicatore per capire in quale posizione ci troviamo rispetto al nostro piano di lavoro.

Stato delle fusioni

Un altro utilizzo di git branch riguarda la possibilità di visualizzare i rami che sono stati sottoposti a merging e quelli che invece non hanno subito una fusione. Per mostrare il funzionamento di questa procedura è possibile partire dalla creazione di un nuovo ramo ("fbk-5" nell'esempio) e dal riposizionamento del puntatore su di esso:

Figura 2. Creazione di un nuovo ramo.
Creazione di un nuovo ramo

Fatto questo operiamo una modifica a carico di un file del progetto e, dopo averla salvata, aggiungiamola all'Index e validiamola tramite un commit:

Figura 3. Commit delle modifiche a partire dal nuovo ramo.
Commit delle modifiche a partire dal nuovo ramo

Una volta confermate le modifiche possiamo passare al merging di "fbk-5" con il ramo master, quindi spostiamoci su quest'ultimo riposizionando il puntatore su di esso e lanciamo il comando git merge fbk-5.

Figura 4. Merging del nuovo ramo con il master.
Merging del nuovo ramo con il master

Ora possiamo utilizzare l'istruzione git branch seguita dal parametro --merged per operare una verifica dei rami che hanno subito una fusione e non sono stati cancellati; l'opzione --no-merged consente al contrario di visualizzare i rami esistenti che non sono stati sottoposti a merging.

Figura 5. Verifica sulla fusione dei rami.
Verifica sulla fusione dei rami

Come è possibile notare grazie all'immagine precedente, dall'elenco dei rami sottoposti a merging manca "vuln-1", esso infatti è stato fuso con il master per poi essere cancellato.

Sicurezza dei rami

Git integra delle funzionalità di controllo per evitare che l'utilizzatore perda il proprio lavoro, ecco perché i rami che non sono stati fusi non potranno essere cancellati con una normale procedura per la rimozione. Nel caso del nostro progetto abbiamo un unico ramo non fuso, "fbk-4", quindi per capire in che modo il DVCS protegge i rami non sottoposti a merging spostiamo il puntatore su di esso, effettuiamo una modifica a carico di un file, aggiungiamola all'indice tramite git add e lanciamo un commit per confermarla.

Figura 6. Commit delle modifiche di un ramo non fuso.
Commit delle modifiche di un ramo non fuso

Ora riposizioniamo il puntatore sul ramo master in modo da operare a partire da esso e proviamo a cancellare "fbk-4".

Figura 7. Tentativo di cancellazione di un ramo non fuso.
Tentativo di cancellazione di un ramo non fuso

Come evidenziato dall'immagine precedente, per la cancellazione di un ramo che non ha subito il merging non è sufficiente utilizzare la classica istruzione git branch -d nome-ramo, se si è assolutamente sicuri di voler procedere con la rimozione è invece prevista l'istruzione git branch -D nome-ramo.

Visualizzare i commit dei rami

Il comando git branch può essere associato all'argomento -v per ottenere informazioni riguardo agli ultimi commit effettuati. Lanciamo quindi questa istruzione a partire dal ramo master e analizziamo l'output prodotto da Git:

Figura 8. Ultimi commit dei rami.
Ultimi commit dei rami

Il report prodotto è di facile lettura. I rami vengono disposti sulla base della cronologia dei commit a partire da quello eseguito più di recente, nel caso specifico del nostro progetto abbiamo quindi per primo il commit a carico del ramo "fbk-4", cioè quello che non è stato sottoposto a fusione. Seguono il ramo "fbk-5", per il quale abbiamo effettuato il merging con il master, e quest'ultimo.

Si noti come il commit del ramo "fbk-5" sia identico a quello del master, questo perché i due rami sono stati fusi e il master, non essendo stato coinvolto da ulteriori commit dopo la fusione con il nuovo ramo, lo ha ereditato da "fbk-5" come ultima convalida di un aggiornamento.

Ti consigliamo anche