Visualizzazione post con etichetta master. Mostra tutti i post
Visualizzazione post con etichetta master. Mostra tutti i post

martedì 28 ottobre 2025

Git: Creazione di un Nuovo Branch

Quando si crea un nuovo branch in Git, in realtà non vengono duplicati file o directory, né viene generata una nuova copia del progetto.

Git si limita semplicemente a creare un nuovo puntatore (reference) a un commit esistente — un’operazione estremamente leggera e immediata.


1. Creazione di un Nuovo Branch

Per creare un nuovo branch denominato test, è sufficiente eseguire:
git branch Test
Questo comando crea un nuovo puntatore al commit corrente, ma non cambia il branch attivo.

In altre parole, il branch test viene creato, ma Git rimane ancora posizionato su master (o qualunque branch fosse attivo).

Branch Test
FIG 1 - Branch Test

Entrambi i branch, master e testing, puntano inizialmente allo stesso commit (40fb977).

Solo in seguito, quando si inizierà a lavorare su testing (con git switch Test o git checkout Test), i due percorsi inizieranno a divergere.



2. Il Ruolo di HEAD in Git

Per determinare su quale branch si stia lavorando, Git utilizza un puntatore speciale chiamato HEAD.

In Git, HEAD è un riferimento simbolico che punta al branch corrente.

Non va confuso con il concetto di HEAD in altri VCS (come Subversion o CVS), dove rappresenta una revisione remota.

Nel nostro esempio, dopo il comando git branch test, il puntatore HEAD rimane collegato a master (FIG 1).



3. Verifica dei Branch e del Puntatore HEAD

Per visualizzare la posizione dei vari branch rispetto ai commit, è possibile utilizzare il comando:

git log --oneline --decorate

git log
FIG 2 - git log

In questo caso, sia master che Test puntano al commit 5e1955b.

Il simbolo HEAD -> master indica che il branch attualmente attivo è master.


4. Comprendere la Leggerezza del Branching in Git

Una delle caratteristiche più potenti di Git è la leggerezza dei branch:

  • Ogni branch è semplicemente un file di testo di pochi byte che contiene l’hash del commit di riferimento.
  • Creare, eliminare o spostare un branch è quindi un’operazione quasi istantanea.
  • Non viene copiato alcun file, e la struttura fisica del progetto rimane invariata.

Questo approccio consente di:

  • creare rapidamente branch tematici (feature branches),
  • sperimentare nuove soluzioni senza rischiare di compromettere la linea principale di sviluppo,
  • integrare e fondere modifiche tramite merge o rebase in modo efficiente.


5. Best Practice
  • Usare nomi descrittivi per i branch, come feature/login-page o bugfix/api-timeout.
  • Creare branch specifici per funzionalità o bug, per mantenere il codice principale stabile.
  • Evitare di lavorare direttamente su master/main, specialmente nei progetti collaborativi.
  • Verificare frequentemente la posizione di HEAD con git status o git branch --show-current.
  • Eliminare i branch non più necessari con git branch -d <nome> per mantenere pulito il repository.