Come eliminare un ramo in Git localmente e in remoto

Una delle caratteristiche più forti di Git sono i suoi rami leggeri. Consentono di lavorare in modo efficiente su fasi parallele di sviluppo. Uno sviluppatore potrebbe persino creare rami individuali per bug separati. Sia nel tempo che nello spazio, le filiali sono quasi gratuite.

Molti flussi di lavoro git si occupano di rami sia a lungo termine che temporanei. Pertanto, è spesso necessario eliminare i rami durante lo sviluppo. Occasionalmente è necessario eliminare i rami condivisi, da un server remoto, nonché i rami locali.

Perché eliminare un ramo?

Innanzitutto, se stai ancora imparando a utilizzare git , ci sono buone possibilità che crei un ramo e poi decidi che non ne hai bisogno. Oppure potresti sperimentare con i rami e voler chiarire te stesso. Questo va bene poiché la ramificazione in git è un’operazione leggera. È molto veloce e utilizza lo spazio su disco in modo efficiente.

Di conseguenza, molti flussi di lavoro di sviluppo git incoraggiano il branching, anche per attività molto piccole o brevi. Ad esempio, una strategia comune consiste nel creare un ramo per una singola correzione di bug. Questo è vero anche se si tratta di un solo autore che apporta una modifica di una riga in un singolo file.

Per questi motivi, la creazione e l’eliminazione di rami sono operazioni che devono essere ben comprese. Potresti trovarti spesso a eliminare rami durante un tipico flusso di lavoro di sviluppo.

Un repository di esempio con filiali

I seguenti esempi fanno riferimento a un repository di esempio con la seguente struttura:

$ git branch -vv
 1 dev 1ae41e8 [origin/dev] first commit
 2 * main 1ae41e8 [origin/main] first commit

Notare che ogni ramo locale ha un ramo a monte corrispondente dal remoto: origin .

Eliminazione di un ramo utilizzando la riga di comando

La sintassi del comando di base per eliminare un ramo è:

git branch (-d | -D) [-r] <branchname>...

La forma più semplice del comando elimina un ramo locale, a condizione che tutte le sue modifiche siano state unite:

$ git branch -d dev

Non è possibile eliminare il ramo attualmente attivo; se provi a farlo, riceverai un messaggio come questo:

error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

Quando le cose vanno bene, vedrai un messaggio di conferma:

Deleted branch dev (was 1ae41e8).

Se elimini un ramo che esiste solo localmente, con modifiche non unite, perderai tali modifiche. Pertanto, git rifiuterà di eliminare un ramo in una situazione del genere, per impostazione predefinita:

error: The branch 'dev' is not fully merged.
 If you are sure you want to delete it, run 'git branch -D dev'.

Come informa il messaggio di errore, è possibile forzare l’eliminazione con il flag -D . Tuttavia, git ti consentirà di eliminare un ramo locale non unito se esiste in remoto:

warning: deleting branch 'dev' that has been merged to
 'refs/remotes/origin/dev', but not yet merged to HEAD.
 Deleted branch dev (was 9a6d20b).

L’eliminazione di un ramo remoto è abbastanza diversa. Userai il comando git push insieme al flag -d per eliminare. Successivamente, fornire il nome del telecomando (spesso origine ) e il nome del ramo:

$ git push -d origin dev
 To github.com:bobbykjack/sandbox.git
 - [deleted] dev

Eliminazione di rami locali e remoti con GitHub Desktop

A differenza del programma git da riga di comando, l’app desktop di GitHub ti consentirà di eliminare solo il ramo attivo. È possibile eseguire questa azione tramite il menu Ramo , selezionando l’opzione Elimina e confermandola:

GitHub Desktop non ti consente di eliminare il ramo predefinito, ad esempio main, anche se lo stesso git lo supporta. Se il ramo predefinito è quello attualmente attivo, l’app disabilita l’azione del menu.

Se il ramo rappresenta anche un ramo remoto, GitHub Desktop offre la possibilità di eliminarlo anche dal telecomando:

Eliminazione di rami utilizzando GitKraken

GitKraken mostra i rami locale e remoto del tuo repository nella barra laterale di sinistra. È necessario eliminarli separatamente .

Passa il mouse sul nome del ramo appropriato e fai clic sul menu Azioni ramo che assomiglia a tre punti verticali. Dal menu, seleziona Elimina <nome ramo> :

Vedrai un messaggio di conferma che ti informa che si tratta di un’operazione distruttiva. Puoi confermare di voler continuare con il pulsante Elimina :

Riflettendo il comportamento predefinito del programma da riga di comando git, devi prima passare a un ramo diverso da quello che stai eliminando . Altrimenti, vedrai un messaggio di errore:

Eliminazione di rami locali e remoti utilizzando Tower

L’eliminazione di un ramo con Tower è molto simile all’eliminazione di un ramo con GitKraken. I rami locali e remoti sono visualizzati in un pannello sul lato sinistro. Fare clic con il tasto destro su qualsiasi ramo e selezionare l’opzione Elimina dal menu contestuale:

Una differenza fondamentale è che un ramo remoto può essere eliminato insieme al suo ramo locale, durante la conferma:

Eliminazione di un ramo su GitHub

GitHub funge solo da sorgente remota, quindi i rami sono remoti per impostazione predefinita. Se elimini un ramo utilizzando il sito Web GitHub, dovrai eliminare il ramo locale corrispondente utilizzando uno degli altri metodi qui.

Come con l’app GitHub Desktop, il sito Web GitHub non ti consentirà di eliminare il ramo predefinito. L’opzione semplicemente non appare. Tuttavia, l’eliminazione di un ramo è semplice. Dalla pagina Codice del repository, fare clic sul collegamento dei rami , individuare il ramo da eliminare, quindi fare clic sull’icona Elimina questo ramo , che ha l’aspetto di un cestino:

Tieni presente che non ci sono controlli per le modifiche non unite, quindi su GitHub, il ramo verrà semplicemente eliminato immediatamente. Tuttavia, poiché rappresenterà sempre un ramo remoto, questo dovrebbe essere il comportamento che ti aspetti.

Nota che, dopo l’eliminazione, vedrai un pulsante per ripristinare il ramo. Tuttavia, questa è semplicemente un’utile funzione di annullamento, nel caso in cui si faccia clic accidentalmente sull’icona di eliminazione. Non fare affidamento su di esso, perché non appena aggiorni o esci dalla pagina, perderai l’opzione!

Eliminazione di rami locali e remoti su Bitbucket

Bitbucket, come GitHub, non ti consentirà di eliminare il ramo predefinito. Bitbucket lo chiama il ramo principale nelle impostazioni del repository . È possibile eliminare qualsiasi altro ramo elencato nella scheda Rami , tramite il menu Azioni corrispondente:

Puoi anche eliminare più di un ramo contemporaneamente se stai eseguendo una grande operazione di pulizia:

L’eliminazione dei rami fa parte di un tipico flusso di lavoro di Git

I rami Git possono complicare il flusso di lavoro, in particolare uno con rami locali, remoti e di monitoraggio. Ma per un semplice sviluppo quotidiano, è probabile che crei ed elimini filiali locali tutto il tempo. Questo è un aspetto fondamentale di un tipico flusso di lavoro git a cui dovresti abituarti.