Veniamo ora ad uno dei capitoli principali di questa guida, quello riguardante le ramificazioni ( branch). Una diramazione è, come dice il nome, un percorso diverso e staccato da quello principale ( master) del progetto. Questo è molto utile per avere dei flussi paralleli indipendenti in cui possiamo sperimentare nuove funzioni o correggere bug senza intaccare il progetto principale e poi, eventualmente, unirli ( merge ) nel ramo principale o in altri rami. Git incentiva molto l’uso dei branch , e noi vi consigliamo vivamente di sfruttarli al massimo: renderanno il lavoro molto più agile e semplice da gestire.
Prima di partire con la creazione e modifica di un ramo, dobbiamo dare uno sguardo al comando git checkout .
git checkout
Questo comando, che vedremo sempre più spesso nei prossimi esempi, è uno dei comandi fondamentali di Git, perché dice sostanzialmente “adesso lavoriamo su questo ramo”. Quando cioè eseguiamo
1 | git checkout master |
stiamo dicendo al sistema di lavorare sul ramo master. Questo significa che nella nostra cartella di lavoro i file saranno riportati all’ultimo stadio di quel ramo, e che tutti i futuri comandi che eseguiremo saranno relativi proprio a quel ramo. Lo useremo spesso per saltare tra un ramo e l’altro.
Creare un ramo
Il comando per creare un ramo è semplicemente git branch <nome> . Quando creiamo un nuovo ramo, ricordiamoci che Git non vi si sposta automaticamente nel ramo appena creato, ma dovremmo farlo noi con git checkout <nome> . Creiamo, ad esempio un branch chiamato test:
1 | git branch test |
Per spostarci in questo nuovo ramo, usiamo il comando
1 2 | $ git checkout test Switched to branch 'test' |
A questo punto, se proviamo a modificare un file nella nostra cartella di lavoro ed effettuiamo un commit, portiamo avanti il ramo test che resta indipendente dagli altri. Proviamo a creare e aggiungere un nuovo file:
1 2 3 4 5 6 7 8 | $ git checkout test Switched to branch 'test' $ touch nuovofile.txt $ git add nuovofile.txt $ git commit -m "primo commit su test" [test dc8c7f7] primo commit su test 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 nuovofile.txt |
Se volessimo tornare al ramo master , dovremmo lanciare il comando
1 2 | $ git checkout master Switched to branch 'master' |
Lista dei rami
Per visualizzare la lista dei rami, usiamo il comando git branch :
1 2 3 | $ git branch master * test |
L’asterisco (*) accanto al nome indica che attualmente ci troviamo in quel ramo.
Cancellare un ramo
Per cancellare il ramo chiamato test , usiamo il comando
1 | git branch -d test |
Se abbiamo già lavorato in questo ramo, Git ci darà un errore:
1 2 3 | $ git branch -d test error: The branch 'test' is not fully merged. If you are sure you want to delete it, run 'git branch -D test'. |
Per non farci perdere il nostro lavoro, Git ci ricorda che l’avanzamento di questo ramò andrà perso se non lo uniamo ( merge ) ad un altro ramo. Nel prossimo capitolo vedremo il grande vantaggio proprio della funzione di merge .