Close

Branch Git

Questo documento è una recensione approfondita del comando git branch e una discussione del modello generale di creazione di branch di Git. La creazione di branch è una funzionalità disponibile nella maggior parte dei moderni sistemi di controllo delle versioni. La creazione di branch in altri VCS può essere un'operazione costosa sia in termini di tempo che di spazio su disco. In Git, i branch fanno parte del tuo processo di sviluppo quotidiano. I branch di Git sono effettivamente un puntatore a un'istantanea delle tue modifiche. Quando vuoi aggiungere una nuova funzionalità o correggere un bug, non importa quanto grande o piccolo, generi un nuovo branch per incapsulare le tue modifiche. Questo rende più difficile il merge di codice instabile nella base di codice principale e ti dà la possibilità di ripulire la cronologia futura prima di eseguirne il merge nel branch principale.


Questo documento è una recensione approfondita del comando git branch e una discussione del modello generale di creazione di branch di Git. La creazione di branch è una funzionalità disponibile nella maggior parte dei moderni sistemi di controllo delle versioni. La creazione di branch in altri VCS può essere un'operazione costosa sia in termini di tempo che di spazio su disco. In Git, i branch fanno parte del tuo processo di sviluppo quotidiano. I branch di Git sono effettivamente un puntatore a un'istantanea delle tue modifiche. Quando vuoi aggiungere una nuova funzionalità o correggere un bug, non importa quanto grande o piccolo, generi un nuovo branch per incapsulare le tue modifiche. Questo rende più difficile il merge di codice instabile nella base di codice principale e ti dà la possibilità di ripulire la cronologia futura prima di eseguirne il merge nel branch principale.

Branch Git
Finestra della console
materiale correlato

Registro Git avanzato

Logo di Bitbucket
Scopri la soluzione

Impara a utilizzare Git con Bitbucket Cloud

Il diagramma sopra mostra un repository con due linee di sviluppo isolate, una per una piccola funzionalità e una per una funzionalità più a lungo termine. Sviluppandole in branch, non solo è possibile lavorare su entrambe in parallelo, ma si mantiene anche il branch main libero da codici discutibili.

L'implementazione dietro i branchi Git è molto più leggera di altri modelli del sistema di controllo delle versioni. Invece di copiare i file da una cartella all'altra, Git memorizza un branch come riferimento a un commit. In questo senso, un branch rappresenta la punta di una serie di impegni, non è un contenitore per i commit. La cronologia di un branch viene estrapolata attraverso le relazioni di commit.

Mentre leggi, ricorda che i branch Git non sono come i branch SVN. Mentre i branch SVN vengono utilizzati solo per registrare gli occasionali sforzi di sviluppo su larga scala, i branch Git sono parte integrante del tuo flusso di lavoro quotidiano. Il seguente contenuto si espanderà sull'architettura di ramificazione interna di Git.

Come funziona


Un branch rappresenta una linea indipendente di sviluppo. I branch fungono da astrazione per il processo di modifica/staging/commit. Puoi pensare ai branch come a un modo di richiedere una nuova directory di lavoro, un'area di staging e la cronologia di progetto. I nuovi commit vengono registrati nella cronologia del branch corrente, risultando in un fork nella cronologia di progetto.

Il comando git branch ti consente di creare, elencare, rinominare ed eliminare i branch. Non ti consente di passare da un branch all'altro o di ricomporre una cronologia con fork. Per questo motivo, git branch è strettamente integrato con i comandi git checkout e git merge.

Opzioni comuni


git branch

Elenca tutti i branch nel tuo repository. È sinonimo di git branch --list.

git branch <branch>

Crea un nuovo branch chiamato . Questo non implica il check-out del nuovo branch.

git branch -d <branch>

Elimina il branch specificato. Questa è un'operazione «sicura» in quanto Git ti impedisce di eliminare il branch se presenta modifiche senza merge.

git branch -D <branch>

Forza l'eliminazione del branch specificato, anche se presenta modifiche senza merge. Questo è il comando da usare se vuoi eliminare definitivamente tutti i commit associati a una particolare linea di sviluppo.

git branch -m <branch>

Rinomina il branch attuale in .

git branch -a

Elenca tutti i branch remoti.

Creazione di branch


È importante capire che i branch sono solo puntatori per i commit. Quando crei un branch, tutto ciò che Git deve fare è creare un nuovo puntatore, non modificare il repository in altri modi. Se inizi con un repository simile a questo:

Repository senza branch

Quindi, crei un branch usando il seguente comando:

git branch crazy-experiment

La cronologia del repository rimane invariata. Tutto ciò che ottieni è un nuovo puntatore al commit corrente:

Crea nuovo branch

Nota che questo crea solo il nuovo branch. Per iniziare ad aggiungere commit, devi selezionarlo con git checkout, quindi utilizzare i comandi git add e git commit standard.

Creazione di branch remoti


Finora tutti questi esempi hanno dimostrato le operazioni dei branch locali. Il comando git branch funziona anche sui branch remoti. Per funzionare su branch remoti, un repository remoto deve prima essere configurato e aggiunto alla configurazione del repository locale.

$ git remote add new-remote-repo https://bitbucket.com/user/repo.git
# Add remote repo to local repo config
$ git push <new-remote-repo> crazy-experiment~
# pushes the crazy-experiment branch to new-remote-repo

Questo comando invierà una copia del crazy-experiment del branch locale al repository remoto remote>.

Eliminazione dei branch


Una volta che hai finito di lavorare su un branch e ne hai eseguito il merge nella base di codice principale, sei libero di eliminarlo senza perdere alcuna cronologia:

git branch -d crazy-experiment

Tuttavia, se il branch non è stato sottoposto a merge, il comando precedente genererà un messaggio di errore:

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

Questo ti protegge dal perdere l'accesso all'intera linea di sviluppo. Se vuoi davvero eliminare il branch (ad esempio se si tratta di un esperimento fallito), puoi usare il flag -D in maiuscolo:

git branch -D crazy-experiment

Questo eliminerà il branch indipendentemente dal suo stato e senza avvisi, quindi usalo con prudenza.

I comandi precedenti elimineranno una copia locale di un branch. Il branch potrebbe ancora esistere nei repository remoti. Per eliminare un branch remoto, esegui quanto segue.

git push origin --delete crazy-experiment

o

git push origin :crazy-experiment

Questo invierà un segnale di cancellazione al repository di origine remoto che attiva l'eliminazione del branch remoto crazy-experiment.

Riepilogo


In questo documento abbiamo discusso il comportamento di creazione di branch di Git e il comando git branch. Il comando git branch ti consente di creare, elencare, rinominare ed eliminare i branch. Per operare ulteriormente sui branch risultanti, il comando è comunemente usato con altri comandi come git checkout. Scopri di più sulle operazioni dei branch git checkout, come cambiare branch ed eseguirne il merge, nella pagina di git checkout.

Rispetto ad altri VCS, le operazioni nei branch di Git sono economiche e vengono utilizzate frequentemente. Questa flessibilità consente una potente personalizzazione del flusso di lavoro Git. Per maggiori informazioni sui flussi di lavoro Git, visita le nostre pagine di discussione estese sul flusso di lavoro: Flusso di lavoro Feature Branch, Flusso di lavoro GitFlow e Flusso di lavoro Forking.


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Le persone collaborano utilizzando una parete piena di strumenti

Blog di Bitbucket

Illustrazione su Devops

Percorso di apprendimento DevOps

Funzione Demo Den per demo con esperti Atlassian

Come Bitbucket Cloud funziona con Atlassian Open DevOps

Iscriviti alla nostra newsletter DevOps

Thank you for signing up