Git memorizza un branch come riferimento a un commit. In questo senso, un branch rappresenta la punta di una serie di commit, non è un contenitore per i commit. La cronologia di un branch viene estrapolata attraverso le relazioni tra commit, che ricordiamo essere l’unione di uno snapshot del contenuto del repository in un certo momento e il riferimento al commit precedente.
Nella pratica di tutti i giorni, i branch sono utilizzati per individuare una linea di sviluppo indipendente, che si tratti della correzione di un bug o dell’aggiunta di una nuova funzionalità. Nel momento in cui viene creato un nuovo branch, Git, in pratica, ci mette a disposizione una nuovo set di working area, staging area e cronologia.
Grazie alla modalità di implementazione dei branch e alle diverse modalità con cui è possibile “spostare” commit e riscrivere la cronologia dei commit offerte da Git, è possibile avere diverse modalità o strategie di utilizzo dei branch, sia per lo sviluppo sul repository locale, sia su quelli remoti condivisi.
Il comando Git branch in Git
Il comando git branch in Git consente di elencare, creare, rinominare ed eliminare branch.
Non consente di passare da un branch all’altro o di rimettere insieme le cronologie di diversi branch. Per questo motivo, git branch è strettamente integrato con i comandi git checkout e git merge.
$ git branch * main $ git branch experiment $ git branch experiment * main
Senza argomenti, il comando git branch elenca i branch locali del repository. Il branch attualmente in uso è contrassegnato da un asterisco. Indicando come opzione il nome di un branch, viene creato un nuovo branch (ma non viene fatto alcuno “switch”
Creare un branch
Alla creazione di un branch in Git, viene soltanto creato un nuovo puntatore alla HEAD del branch attualmente in uso. Non viene fatta alcuna altra modifica al repository.
Nell’uso del comando git branch possono risultare utili se seguenti opzioni:
- git branch -d <branch> – elimina il branch indicato, impedendo però l’eliminazione se sono presenti commit non mergiati
- git branch -D <branch> – elimina il branch indicato senza verificare la presenza di commit non mergiati
- git branch -m <branch> – rinomina il branch corrente
git branch -a – elenca i branch remoti