Articolo originale: Git Delete Branch – How to Remove a Local or Remote Branch

Git è un popolare sistema di controllo della versione e uno strumento essenziale nella cassetta degli attrezzi di uno sviluppatore.

I branch sono una parte potente e integrante del lavoro con Git.

In questo articolo, imparerai le basi per quanto riguarda l'eliminazione di branch locali e remoti in Git.

Cosa sono i branch in Git?

Un branch è un puntatore a un commit.

I branch di Git sono un'istantanea di un progetto e delle sue modifiche, in uno specifico punto nel tempo.

Quando si lavora su un grande progetto, c'è un repository principale con tutto il codice, spesso chiamato main o master.

Usando un branch sei in grado di creare versioni nuove e indipendenti dall'originale progetto di lavoro principale. Potresti creare un branch per fare modifiche, aggiungere una nuova caratteristica, o scrivere dei test quando stai tentando di risolvere un bug. Un nuovo branch ti consente di fare questo senza influenzare il codice principale in alcun modo.

Riepilogando, i branch ti consentono di fare modifiche al codebase senza influenzare il codice principale, fino a quando sei assolutamente pronto per implementare queste modifiche.

Questo ti aiuta a mantenere il codebase pulito e organizzato.

Perché eliminare i branch in Git?

Hai creato un branch che contiene del codice per una modifica che vorresti effettuare nel tuo progetto.

Poi hai incorporato quella modifica o nuova funzionalità nella versione originale del progetto.

Ciò significa che non è più necessario mantenere o usare quel branch, quindi è buona prassi comunemente usata eliminarlo in modo che non ingombri il tuo codice.

Come eliminare un branch locale in Git

I branch locali sono branch sulla tua macchina locale e non influiscono sui branch remoti.

Il comando per eliminare un branch locale in Git è:

git branch -d  nome_branch_locale
  • git branch è il comando che lavora sui branch.
  • -d è un'opzione del comando, e un alias per  --delete (elimina).  Denota che tu vuoi eliminare qualcosa come suggerisce il nome (inglese).
  • nome_branch_locale è il nome del branch che vuoi rimuovere.

Diamo un'occhiata a questo in modo un po' più dettagliato con un esempio.

Per elencare tutti i branch puoi usare il comando seguente:

git branch

Nel mio caso ho due branch, master e test2. Sono attualmente sul branch test2 come mostra l'asterisco (*) a fianco del nome del branch:

Screenshot-2021-08-25-at-4.13.14-PM

Voglio eliminare il branch test2 , ma non è possibile eliminare il branch sul quale si è attualmente posizionati.

Se provassi a farlo, otterresti un errore come questo:

Screenshot-2021-08-25-at-4.17.50-PM

Quindi, prima di eliminare un branch locale, spostati in un altro branch che NON vuoi eliminare, con il comando git checkout :

git checkout nome_branch

#dove nome_branch è il nome del branch nel quale vuoi spostarti
#nel mio caso l'altro branch che ho è master quindi eseguo:
#git checkout master

Ecco il risultato:

Screenshot-2021-08-25-at-4.20.40-PM

Ora posso eliminare il branch:

Screenshot-2021-08-25-at-5.10.13-PM

Il comando che abbiamo appena usato per eliminare un branch locale non funziona sempre.

Se il branch contiene modifiche al codice che non sono state integrate oppure che si trovano in commit non inviati al repository remoto, l'opzione -d non consente l'eliminazione del branch locale.

Questo perché i commit non sono visti da alcun altro branch e Git ti sta proteggendo contro la perdita accidentale di dati passati a commit.

Se provi a fare questo, Git ti mostra un errore, il cui testo tradotto è "errore: Il branch 'test_2' non è stato interamente integrato. Se sei sicuro di volerlo cancellare, esegui 'git branch -D test_2'"

Screenshot-2021-08-25-at-5.23.46-PM

Come suggerito dal messaggio di errore, devi usare il flag -D al posto di -d:

git branch -D nome_branch_locale

L'opzione -D maiuscola (che è un alias per --delete --force – eliminazione forzata), forza l'eliminazione del branch locale a prescindere dallo stato delle integrazioni.

Nota che dovresti usare questo comando con cautela, visto che non ti verrà richiesta conferma per questa azione.

Usalo solo se se sei assolutamente sicuro che vuoi eliminare un branch locale.

Se non hai integrato il branch in un altro branch locale o inviato il commit a un branch remoto nel codebase, rischierai di perdere tutte le modifiche che hai effettuato.

Screenshot-2021-08-25-at-5.33.41-PM

Come eliminare un branch remoto in Git

I branch remoti sono separati da quelli locali.

Sono dei repository ospitati in un server remoto ai quali si può accedere, al contrario dei branch locali, che sono repository nel tuo sistema locale.

Il comando per eliminare un branch remoto è:

git push nome_remoto -d nome_branch_remoto
  • Invece di usare il comando git branch, utilizzato per i branch locali, puoi eliminare un branch remoto con il comando git push.
  • Poi specifichi il nome del repository remoto, che nella maggior parte dei casi è origin.
  • -d è l'opzione per l'eliminazione, alias per --delete.
  • nome_branch_remoto è il branch remoto che vuoi eliminare.

Ora vediamo un esempio di come eliminare un branch remoto.

Per visualizzare tutti i  branch remoti usa questo comando:

git branch -a

L'opzione -a (a alias per --all - tutto-) mostra tutti i branch, sia locali che remoti.

Screenshot-2021-08-25-at-7.35.31-PM

Ho due branch locali, chiamati master e test e due remoti, origin/master e origin/test.

L'opzione -r, un alias per --remotes (remoti), mostra solo i branch nei repository remoti.

Screenshot-2021-08-25-at-7.37.12-PM

Voglio eliminare il branch remoto origin/test , quindi uso il comando:

git push origin -d test

Risultato:

Screenshot-2021-08-25-at-7.39.34-PM

Il comando ha eliminato il branch test nel repository chiamato origin.

Il branch origin/test sul repository remoto non è più presente:

Screenshot-2021-08-25-at-7.42.01-PM

Conclusione

Ora sai come eliminare branch locali e remoti in Git.

Se vuoi saperne di più su Git, puoi vedere i seguenti corsi nel canale YouTube di freeCodeCamp:

Grazie per aver letto questo articolo e buon apprendimento!