Guida Completa al Branching in Git: Creare, Cambiare, Eliminare
Impara come creare, cambiare, tracciare, organizzare ed eliminare in sicurezza i branch Git nei flussi di lavoro di sviluppo quotidiani.
Guida Completa al Branching in Git: Creare, Cambiare, Eliminare
Il branching in Git ti consente di lavorare su una funzionalità, una correzione o un esperimento senza disturbare la linea principale di sviluppo. Una buona abitudine di branching mantiene le tue modifiche organizzate e rende le revisioni, i test e il rollback molto più semplici.
I branch sono puntatori leggeri ai commit. Questo significa che crearli, cambiarli ed eliminarli è veloce, ma le scelte che fai influenzano comunque la chiarezza della cronologia del progetto.
Cos'è un Branch Git
Un branch Git è un nome mobile che punta a un commit. Quando esegui il commit di un nuovo lavoro su un branch, Git sposta in avanti il nome del branch verso il nuovo commit.
La maggior parte dei progetti ha un branch principale come main o master. I team di solito mantengono stabile quel branch, quindi creano branch a vita breve per lavori specifici:
git switch -c fix-login-timeout
Questo crea un nuovo branch e ci si sposta. Esempi più vecchi di Git potrebbero usare:
git checkout -b fix-login-timeout
Entrambi i pattern sono comuni, ma git switch è più facile da leggere perché si concentra solo sul movimento del branch.
I nomi dei branch dovrebbero essere abbastanza specifici da spiegare il lavoro. feature è troppo vago. feature/add-health-check-endpoint o fix/nginx-502-upstream-timeout è molto meglio. Un nome chiaro aiuta te e i tuoi revisori a capire il branch prima di aprire qualsiasi file.
Creare e Cambiare Branch
Prima di creare un branch, parti dalla base giusta. Per la maggior parte dei team, questo significa aggiornare prima il branch principale:
git switch main
git pull
git switch -c feature/add-metrics-endpoint
Questo riduce la possibilità che il tuo nuovo branch parta da codice obsoleto. Non elimina i conflitti, ma ti dà un punto di partenza più pulito.
Per elencare i branch locali, esegui:
git branch
Il branch corrente ha un asterisco accanto. Per vedere anche i branch remoti, usa:
git branch -a
Per passare a un branch esistente:
git switch nome-branch
Se il branch esiste solo sul remoto, di solito puoi creare un branch di tracciamento locale con:
git switch --track origin/nome-branch
Il tracciamento è importante perché collega il tuo branch locale alla sua controparte remota. Una volta impostato il tracciamento, comandi semplici come git pull e git push sanno quale branch remoto usare.
Per uno scenario concreto, immagina di dover correggere un fallimento della pipeline Jenkins mentre lavori anche a una pulizia più grande delle immagini Docker. Metti queste modifiche su branch separati. La correzione urgente può essere revisionata e unita rapidamente, mentre la pulizia più grande può continuare senza bloccarla.
Per le basi correlate, vedi iniziare con i repository Git.
Mantenere i Branch Organizzati
I branch diventano disordinati quando rimangono aperti troppo a lungo o raccolgono modifiche non correlate. Il miglior branch è di solito piccolo, focalizzato e facile da revisionare.
Usa un branch per uno scopo:
- Un branch di correzione bug dovrebbe includere la correzione e tutti i test correlati.
- Un branch di funzionalità dovrebbe includere la funzionalità, non refactoring di passaggio.
- Un branch di pulizia dovrebbe evitare cambiamenti di comportamento a meno che non siano chiaramente parte della pulizia.
Prima di eseguire il push, controlla il tuo lavoro:
git status
git diff --staged
Questo cattura file accidentali e modifiche non correlate. È particolarmente utile nei repository DevOps dove file generati, configurazioni locali e template di segreti possono trovarsi vicino a file sorgente reali.
Quando il tuo branch ha bisogno delle ultime modifiche da main, hai due opzioni comuni:
git merge main
o:
git rebase main
Merge preserva la cronologia esatta del branch. Rebase riscrive i commit del tuo branch sopra la base più recente. Entrambi sono utili, ma i team dovrebbero concordare su quale stile aspettarsi prima di unire lavoro condiviso. Se non sei sicuro, preferisci il flusso di lavoro documentato dal tuo progetto.
Eliminare Branch in Sicurezza
Eliminare i branch vecchi mantiene il tuo repository più facile da navigare. Dopo che un branch è stato unito, elimina la copia locale con:
git branch -d nome-branch
La -d minuscola è l'opzione più sicura. Git rifiuta di eliminare il branch se ritiene che il lavoro non sia stato unito.
Se hai davvero bisogno di eliminare un branch locale non unito, usa:
git branch -D nome-branch
Usalo con attenzione. Rimuove il nome del branch anche se i commit non sono uniti. I commit potrebbero ancora essere recuperabili per un po' tramite il reflog, ma non dovresti trattarlo come una normale rete di sicurezza.
Per eliminare un branch remoto:
git push origin --delete nome-branch
Elimina i branch remoti solo quando il lavoro è stato unito, abbandonato o chiaramente di tua proprietà. Su team condivisi, i branch remoti potrebbero essere usati per revisioni, anteprime di deployment o altri sviluppatori.
Puoi pulire i riferimenti di tracciamento remoti obsoleti con:
git fetch --prune
Questo rimuove i riferimenti locali a branch remoti che non esistono più sul server. Non elimina i branch remoti reali.
Quando Chiedere a un Collega
La creazione e il cambio di branch sono operazioni a basso rischio. I momenti rischiosi sono eliminare lavoro non unito, fare force-push e fare rebase di branch che altre persone potrebbero già usare.
Chiedi prima di fare force-push su un branch condiviso. Chiedi anche prima di eliminare un branch remoto che non hai creato tu. Nei repository CI/CD pesanti, un branch potrebbe attivare build, anteprime o regole di deployment che non sono ovvie solo da Git.
Un buon branching riguarda principalmente la chiarezza. Crea un branch dalla base giusta, nominalo in base al lavoro, mantienilo focalizzato ed eliminalo quando non è più necessario. Queste abitudini rendono Git più facile per te e più sicuro per tutto il team.