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

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:

git branch test

Per spostarci in questo nuovo ramo, usiamo il comando

$ 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:

$ 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

$ git checkout master
Switched to branch 'master'

Lista dei rami

Per visualizzare la lista dei rami, usiamo il comando git branch :

$ 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

git branch -d test

Se abbiamo già lavorato in questo ramo, Git ci darà un errore:

$ 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 .