Come eliminare i rami Git su repository locali e remoti

0
39

I branch sono una parte fondamentale dei flussi di lavoro Git, utilizzati per mantenere il codice incompleto fuori dalla base di codice principale. Tuttavia, se lavori molto con loro, potresti avere un mucchio di riferimenti di rami inutilizzati nell'elenco dei rami che devono essere eliminati.

Perché eliminare Rami?

È importante capire come funzionano i rami prima di eliminarli. Prima di tutto, non stai cancellando alcun codice—stai eliminando il riferimento del ramo, che in alcuni casi può comunque portare alla perdita di dati, ma per la maggior parte dei flussi di lavoro è del tutto innocuo.

< p>Puoi pensare ai commit di Git come a una catena che punta all'indietro, costruendo la tua cronologia di Git fino all'inizio del repository (è tecnicamente memorizzato come blob e alberi complicati internamente, ma questa analogia funziona nella maggior parte dei casi ).

I rami delle caratteristiche sono fork in questa catena, creando due storie divergenti. Quando crei un commit su un nuovo ramo, viene creato un riferimento al ramo e impostato per puntare verso quel commit. Unisci commit li riunisce e sposta anche l'etichetta della funzionalità in modo che sia in linea con il master.

A questo punto, feature e master stanno entrambi facendo la stessa cosa. Puoi eliminare il riferimento alla funzionalità e nessun codice andrà perso. Se non intendi riutilizzare questo ramo, è consigliabile eliminarlo semplicemente.

Annuncio

Tuttavia, ciò può portare alla perdita di dati se il riferimento del ramo punta a commit che non sono stati uniti nella timeline principale (o in un altro ramo). Git riconoscerà che questi commit non sono più necessari, poiché non esiste un riferimento di ramo attivo che li includa e li pulirà quando esegue la garbage collection.

Puoi anche scegliere di non eliminare i rami. Tuttavia, il riferimento del ramo non si sposterà con il master, che continuerà ad andare avanti. Se effettui un nuovo commit nel ramo delle funzionalità, verrà creato un “nuovo ramo” nella cronologia, che può essere unito, ma potrebbe essere gravemente obsoleto.

< /p>

Per questo motivo, a meno che tu non unisca costantemente due rami, è meglio eliminare i rami di funzionalità dopo che sono stati uniti per cancellare la cronologia.

Elimina ramo locale

Git non ti consente di eliminare il ramo su cui si trova l'HEAD, quindi dovrai riportare il tuo ramo funzionante a master. A meno che, ovviamente, tu non voglia eliminare master per qualche motivo.

git checkout master

Quindi, puoi usare git branch con il flag -d per eliminare un branch:

git branch -d branch_name

A causa del modo in cui Git gestisce i rami, questo comando può fallire in determinate circostanze. Git in realtà mantiene tre rami per ogni “ramo”: il ramo locale, il ramo remoto e un ramo di monitoraggio remoto solitamente chiamato origin/branchname.

Pubblicità

Il -d flag eliminerà solo i rami che sono stati inseriti e uniti nel ramo di monitoraggio remoto. Questo di solito è quello che vorresti per le normali operazioni, ma se vuoi eliminarlo forzatamente, puoi eseguire di nuovo lo stesso comando con un flag -D maiuscolo:

git branch -D branch_name

Mantieni tieni presente che questo porterà alla perdita di dati se i commit non vengono uniti.

Elimina ramo remoto

Anche l'eliminazione di rami sul remoto è facile. Per eliminare i rami remoti, esegui git push con il flag -d , che causerà la rimozione del ramo se hai accesso per farlo.

git push origin -d branch_name

A seconda del tuo provider Git, come Github o Bitbucket, potrebbe essere necessario abilitare l'eliminazione dei rami nelle impostazioni online e potrebbero esserci strumenti per gestire l'eliminazione.

Tuttavia, questo non invierà le modifiche ai computer client, fino a quando eseguono git fetch con il flag –prune , che ripulirà i vecchi rami:

git fetch –all –prune

Eliminazione automatica della richiesta pull di Github Rami

Github ha effettivamente una bella funzionalità per i repository per ripulire automaticamente i rami creati dalle richieste pull. Puoi attivarlo nelle impostazioni, in Opzioni > Pulsante Unisci: