Vai al contenuto principale

Tutorial sui tag Git: come creare, gestire e usare i tag

Impara a usare efficacemente i tag Git per segnare traguardi importanti, organizzare il workflow e migliorare la collaborazione sul progetto.
· 8 min leggi

Scopri con l'IA

Sono un ingegnere di machine learning. Se c’è una cosa essenziale che ho imparato, è che un versioning pulito non è solo una buona pratica: è fondamentale per la riproducibilità e la collaborazione.

I tag Git sono essenziali per segnare stati stabili del codice. Aiutano a creare release, effettuare rollback a una versione precedente o integrarsi nei workflow CI/CD. Che tu stia lavorando su codice, dati o nuovi modelli di machine learning, i tag Git ti semplificano la vita, a prescindere dal tuo background o ruolo.

In questo tutorial ti spiegherò tutto ciò che devi sapere per applicare e padroneggiare i tag Git. Pronto a vedere come i tag Git possono semplificarti lo sviluppo? Andiamo al sodo.

>Se prima vuoi una panoramica rapida di Git, ti consiglio di leggere GitHub and Git Tutorial for Beginners.

Che cos’è un tag Git?

Un tag Git è un modo semplice ma potente per segnare punti specifici nella cronologia di un progetto. Pensalo come un post-it su un determinato commit che dice: “Questo è importante”. 

I tag Git solitamente etichettano versioni di rilascio, traguardi o checkpoint stabili nella base di codice. Sono riferimenti fissi a uno specifico commit ma non creano un nuovo commit. Una volta taggato un commit, quell’etichetta rimane ancorata a esso a meno che tu non sposti o elimini manualmente il tag.

The master branch with two Git tags

Il branch master con due tag Git. Immagine dell’autore.

Esistono due tipi principali di tag:

  • Tag leggeri (lightweight): sono come segnalibri semplici. Puntano a uno specifico commit senza informazioni aggiuntive. Sono rapidi e facili da creare, spesso usati come riferimento locale o per debug veloci, ma non memorizzano metadati come autore o messaggio.
  • Tag annotati: sono più robusti e vengono salvati come oggetti Git completi. Includono nome, email, data e messaggio del creatore del tag e possono persino essere firmati crittograficamente. I tag annotati sono ideali per marcare punti di rilascio o condividere tag con un team.

>Per approfondire Git, ti consiglio di dai un’occhiata ai corsi Foundations of Git o Intermediate Git.

Come creare e gestire i tag Git

Creare e gestire i tag Git è semplice. Vediamo i diversi tipi di tag e come applicarli.

Creare tag leggeri

Un tag leggero è come un puntatore a un commit. Non include metadati, solo il nome del tag e il commit a cui punta.

Per crearne uno, puoi eseguire: 

git tag v1.0.0

Questo comando crea un tag leggero che punta all’attuale commit di HEAD. 

In alternativa puoi creare un tag per uno specifico commit fornendo l’hash del commit:

git tag v1.0.0 5c5fc06

I tag leggeri sono utili come riferimenti rapidi e locali, soprattutto in progetti individuali o lavori temporanei.

Creare tag annotati

I tag annotati memorizzano più informazioni, come il nome, l’email, la data e il messaggio di chi crea il tag. Sono salvati come oggetti Git completi e sono ideali per taggare release ufficiali o traguardi.

Puoi crearne uno eseguendo: 

git tag -a v1.0.0 -m "Release version 1.0.0"

Questo comando crea un tag annotato chiamato v1.0.0 con il messaggio "Release version 1.0.0".

Puoi anche taggare uno specifico commit:

git tag -a v1.0.0 5c5fc06 -m "Tagging older commit"

I tag annotati offrono una documentazione migliore, si integrano bene con gli strumenti CI/CD e aiutano i team a tracciare la storia in modo più trasparente.

Taggare commit specifici

A volte devi taggare un commit che non è l’ultimo. Per farlo, puoi prima recuperare la cronologia dei commit e poi selezionare l’hash del commit che vuoi taggare.

Per ottenere l’hash, esegui:

git log --oneline

Copia l’hash del commit dall’elenco, quindi:

git tag -a v1.0.0 <commit-hash> -m "Tagging v1.0.0 release"

Verificare i tag creati

Per elencare tutti i tag nel repository, usa:

git tag

Se vuoi filtrare i tag, ad esempio solo le versioni che iniziano con v1., usa:

git tag -l 'v1.*'

Per vedere i dettagli di un tag specifico, esegui:

git show v1.0.0

Lavorare con i tag Git

Una volta creati i tag Git, spesso dovrai condividerli, aggiornarli o interagirci come parte del tuo workflow di sviluppo o rilascio. Questa sezione copre le attività più comuni per lavorare con i tag in repository locali e remoti. 

Push dei tag su un repository remoto

I tag non vengono inviati automaticamente ai repository remoti quando esegui git push. Devi inviarli esplicitamente.

Per inviare un singolo tag:

git push origin v1.0.0

Per inviare tutti i tag in una volta:

git push --tags

I tag vanno inviati così che i tuoi compagni di squad pipeline CI/CD possano accedervi. I tag sono spesso usati anche come trigger di deploy, soprattutto seguendo flussi di rilascio versionati. Puoi leggere di più su come fare push e pull dei branch nel Git Push and Pull Tutorial.

Eliminare i tag

Se vuoi eliminare un tag, puoi farlo in locale e in remoto.

Per eliminarlo in locale, esegui:

git tag -d v1.0.0

Per poi eliminare lo stesso tag dal repository remoto:

git push origin --delete v1.0.0

Puoi anche eliminare direttamente il tag dall’interfaccia web di GitHub o GitLab. 

>Se vuoi saperne di più su GitHub e su come usarlo, ti consiglio i corsi GitHub Foundations e GitHub Concepts.

Fare checkout dei tag

Puoi portare il repository allo stato di un tag specifico eseguendo:

git checkout v1.0.0

Tuttavia, questo ti mette in uno stato di HEAD staccata (detached). Significa che non sei più su un branch e ogni nuovo commit non apparterrà a nessun branch a meno che tu non ne crei esplicitamente uno:

git checkout -b hotfix-v1.0.0

Fare checkout di un tag specifico aiuta a fare debug o rivedere una certa versione di rilascio senza influire sul ramo di sviluppo attuale. Si usa anche per costruire l’applicazione in produzione a partire da una versione specifica, ad esempio quando bisogna creare un’immagine Docker.

Taggare dopo un commit

Se devi aggiornare un tag, ad esempio spostandolo su un commit diverso o cambiando il messaggio, puoi forzarne l’aggiornamento eseguendo:

git tag -f -a v1.0.0 5c5fc06 -m "retagging"

Puoi anche eseguire lo stesso comando senza un hash di commit per aggiungere semplicemente il tag all’attuale HEAD.

>Se ti serve una panoramica rapida dei comandi Git tradizionali, ti consiglio il Complete Git Cheat Sheet.

Best practice per usare i tag Git

Sapere come creare e gestire i tag è una cosa, usarli in modo efficace è un’altra. Se usati con criterio, i tag possono migliorare workflow, documentazione e comunicazione nel team.

Usare i tag per il versioning

I tag sono perfetti per il versionamento semantico, che è il modo consigliato di versionare le tue release. 

Nel versionamento semantico, i numeri di versione seguono il formato MAJOR.MINOR.PATCH, per esempio v.1.2.0.

MAJOR per cambiamenti più estesi e incompatibili, MINOR per funzionalità aggiunte e PATCH per correzioni di bug.

Il versionamento semantico è molto potente: comunica chiaramente la portata dei cambiamenti, aiuta a capire la compatibilità e funziona bene con strumenti automatici come i trigger CI/CD.

Mantieni una convenzione di denominazione coerente. Scegli un pattern (ad esempio, prefissa sempre con v) e seguilo in tutte le release.

Taggare le release

I tag sono ideali per marcare le fasi chiave di rilascio del tuo progetto. Ecco alcuni tipi di tag utili da considerare:

  • v1.0.0-alpha: versione per test interni
  • v1.0.0-beta: beta pubblica
  • v1.0.0: rilascio finale in produzione

Taggando queste fasi, puoi condividere più facilmente build di test, tornare a release precedenti e mantenere una cronologia pulita dei deploy in produzione. 

Puoi migliorare ulteriormente il processo usando tag annotati per le release, così da catturare contesto e documentazione adeguati.

Evitare l’abuso di tag

Per quanto utili e potenti, i tag possono diventare inutili se abusati. Dovrebbero marcare solo punti significativi nella storia del progetto, come versioni stabili, completamenti di funzionalità importanti, traguardi o scadenze. 

Taggare ogni commit riempie di disordine il repository e vanifica lo scopo della navigazione rapida. Tienilo pulito e mirato!

Una buona regola empirica: probabilmente non serve un tag se non lo distribuirresti o non lo annunceresti.

Risoluzione dei problemi con i tag Git

Anche seguendo le best practice, a volte incontrerai problemi lavorando con i tag Git, soprattutto in team o sincronizzando con repository remoti. Questa sezione spiega come gestire i problemi più comuni.

Gestire lo stato di HEAD staccata

Quando fai checkout di un tag specifico con:

git checkout v1.0.0

Git ti mette in uno stato di HEAD staccata, come detto prima. Non sei su un branch, quindi se effettui un commit non apparterrà a nessun branch e potrebbe andare perso se non intervieni. 

Puoi risolvere creando un branch eseguendo:

git checkout -b hotfix-v1.0.0

Ora stai lavorando su un branch e puoi fare commit e push come al solito.

Risoluzione dei conflitti tra tag

I conflitti possono verificarsi quando lo stesso nome di tag punta a commit diversi in locale e in remoto. 

Spesso accade quando elimini e ricrei un tag in locale, o qualcun altro effettua un force-push di un tag.

Ci sono due opzioni per risolvere il problema.

Opzione 1: elimina e rifai push del tag

git tag -d v1.0.0
git push origin --delete v1.0.0
git tag -a v1.0.0 -m "Corrected tag"
git push origin v1.0.0

Opzione 2: force-push del tag aggiornato

Se sei sicuro che il tuo tag locale sia quello corretto e hai i permessi:

git push origin -f v1.0.0

Ma fai attenzione: il force-push può sovrascrivere le modifiche altrui. Usalo solo quando sei certo o dopo averne parlato con il team.

Conclusione

I tag Git sono uno strumento molto potente se usati con criterio. In questo tutorial hai imparato:

  • Cosa sono i tag Git e quando usarli
  • Come applicare i tag Git nel tuo repository
  • Best practice per usare i tag Git
  • Come risolvere i problemi più comuni quando lavori con i tag Git

Che tu stia rilasciando modelli di machine learning, pubblicando aggiornamenti a un data product o collaborando in team, i tag ti aiutano a segnare momenti significativi nella timeline del progetto. Mantengono tutto organizzato, riproducibile e facile da ripristinare o distribuire.

Io mi affido costantemente ai tag Git. Mi fanno risparmiare ore permettendomi di tornare a versioni stabili quando emergono bug o di attivare workflow CI/CD automatici. Li uso per taggare e versionare le immagini Docker per i build di produzione, garantendo che tutto ciò che distribuisco sia completamente tracciabile e documentato.

Inizia a usare i tag oggi e trasforma il tuo workflow Git!

FAQs

A cosa serve un tag Git?

Un tag Git segna punti specifici nella cronologia di un repository, spesso per release o traguardi importanti.

Qual è la differenza tra tag Git leggeri e annotati?

I tag leggeri sono semplici riferimenti a un commit, mentre i tag annotati memorizzano metadati come autore, data e messaggio.

Cosa succede quando faccio checkout di un tag in Git?

Entri in uno stato di “HEAD staccata” (detached), cioè non sei su un branch e i commit non verranno salvati su alcun branch a meno che tu non ne crei uno.

Come creo un tag Git?

Usa git tag <tagname> per un tag leggero o git tag -a <tagname> -m "message" per un tag annotato.

I tag Git sono comunemente usati nei workflow CI/CD?

Sì. I tag possono attivare build o deploy automatici nelle pipeline CI/CD, soprattutto quando si taggiano versioni di rilascio.

Patrick Brus

Autore

Patrick Brus

Sono un Cloud Engineer con una solida base in Ingegneria Elettrica, machine learning e programmazione. Ho iniziato la mia carriera nella visione artificiale, concentrandomi sulla classificazione delle immagini, per poi passare a MLOps e DataOps. Mi occupo di creare piattaforme MLOps, supportare i data scientist e fornire soluzioni basate su Kubernetes per semplificare i flussi di lavoro di machine learning.

Argomenti

Correlato