Articolo originale: https://www.freecodecamp.org/news/git-branch-explained-how-to-delete-checkout-create-and-rename-a-branch-in-git/

Git Branch

È una funzionalità che ti consente di creare nuovi branch di un progetto per provare idee, isolare nuove funzionalità, oppure sperimentare senza impatti sul progetto principale.

Sommario

Visualizzare i branch

Per visualizzare i branch in un repository Git esegui il comando:

git branch

Per vedere sia i branch tracciati su remoto che i branch locali esegui il comando:

git branch -a

Ci sarà un asterisco (*) a fianco del branch sul quale ti trovi attualmente.

Ci sono svariate opzioni che puoi specificare con git branch per vedere informazioni differenti. Per maggiori dettagli sui branch puoi usare l'opzione -v (oppure -vv o --verbose). L'elenco dei branch includerà a fianco del nome il valore SHA-1 e la riga di oggetto del commit per l'HEAD di ogni branch.

Puoi usare l'opzione -a (oppure --all) per mostrare tutti i branch di un repository, sia locali che remoti. Se vuoi vedere solo i branch remoti usa l'opzione -r (oppure--remotes).

Passare da un branch a un altro

Per passare da un branch a un altro branch esistente (azione di checkout) esegui il comando:

git checkout NOME-BRANCH

In genere Git non ti lascerà uscire per passare a un altro branch, a meno che la tua directory di lavoro sia pulita, in quanto perderesti qualsiasi modifica fatta che non sia stata soggetta a commit. Hai tre opzioni per gestire le tue modifiche:

  1. sbarazzartene (vedi Git checkout per dettagli) oppure
  2. effettuare un'azione di commit (vedi Git commit per dettagli) oppure
  3. accantonarle (vedi Git stash per dettagli).

Creare un nuovo branch

Per creare un nuovo branch esegui il comando:

git branch NOME-NUOVO-BRANCH

Nota che questo comando crea solamente il nuovo branch. Per spostarti devi eseguire il comando git checkout NOME-NUOVO-BRANCH.

Esiste una scorciatoia per creare e passare direttamente a un nuovo branch. Puoi eseguire git checkout con l'opzione -b (per branch). I seguenti comandi fanno la stessa cosa:

# Metodo a due passaggi
git branch NOME-NUOVO-BRANCH
git checkout NOME-NUOVO-BRANCH

# Scorciatoia
git checkout -b NOME-NUOVO-BRANCH

Quando crei un nuovo branch, verranno inclusi tutti i commit del branch genitore. Il branch genitore è quello nel quale di trovi quando crei il nuovo branch.

Rinominare un branch

Per rinominare un branch esegui il comando:

git branch -m VECCHIO-NOME-BRANCH NUOVO-NOME-BRANCH

# Alternativa
git branch --move VECCHIO-NOME-BRANCH NUOVO-NOME-BRANCH

Eliminare un branch

Git non ti consente di eliminare il branch sul quale ti trovi attualmente. Prima devi passare a un altro branch, quindi eseguire il comando:

git branch -d BRANCH-DA-ELIMINARE

# Alternativa:
git branch --delete BRANCH-DA-ELIMINARE

Il branch nel quale passi prima dell'eliminazione fa la differenza. Git solleverà un errore se su tutte le modifiche nel branch che stai tentando di eliminare non è stata eseguita un'azione di merge all'interno del branch corrente. Puoi inibire questo comportamento e forzare Git a eliminare il branch con l'opzione -D (nota la lettera maiuscola) oppure usando l'opzione --force con -d oppure --delete:

git branch -D BRANCH-DA-ELIMINARE

# Alternativa
git branch -d --force BRANCH-DA-ELIMINARE
git branch --delete --force BRANCH-DA-ELIMINARE

Confrontare dei branch

Puoi confrontare dei branch con il comando git diff:

git diff PRIMO-BRANCH..SECONDO-BRANCH

Vedrai un risultato con testo colorato per evidenziare le modifiche tra i branch. Per tutte le righe modificate, la versione SECONDO-BRANCH avrà una riga verde che inizia con un  ”+”, e la versione PRIMO-BRANCH avrà una riga rossa che inizia con un  ”-“. Se non vuoi che Git visualizzi due righe per ogni modifica, puoi usare l'opzione --color-words (colora parole), nel qual caso Git mostrerà una riga con il testo eliminato in rosso e il testo aggiunto in verde.

Se vuoi vedere un elenco di tutti i branch sui quali è stata eseguita un'azione di merge per tutte le modifiche verso il branch corrente (in altre parole se il tuo branch corrente include tutte le modifiche fatte negli altri branch in elenco), esegui il comando git branch --merged.

Aiuto per Git branch

Se non ti ricordi come si usa un'opzione, oppure vuoi esplorare altre funzionalità del comando git branch, puoi eseguire uno qualunque di questi comandi:

git help branch
git branch --help
man git-branch

Ulteriori informazioni