git tag
Informazioni utili sul comando git tag, i suoi tipi, come condividere, fare checkout ed eliminare i tag in Git.
Cos'è un tag Git
Un tag è un riferimento con nome che punta a uno specifico commit nella cronologia di Git. A differenza di un branch, che avanza ogni volta che si effettua un commit, un tag rimane fisso sul commit per cui è stato creato. Questo li rende ideali per contrassegnare punti significativi e permanenti in un progetto — più comunemente le versioni di rilascio come v1.0.0 o v2.3.1.
Questa pagina spiega come creare i due tipi di tag (annotati e leggeri), come elencarli e filtrarli, come taggare commit precedenti e come inviare, ispezionare ed eliminare i tag.

Creare un tag Git
Per creare un tag Git, esegui il comando seguente:
git tag
git tag <name-of-tag>Quando crei un tag, sostituisci <name-of-tag> con un identificatore semantico per lo stato del repository — ad esempio v1.3. Git supporta due tipi di tag: annotati e leggeri. La principale differenza tra loro è la quantità di metadati che memorizzano.
Tag annotati vs. tag leggeri
Scegliere il tipo di tag giusto è più importante di quanto sembri:
- I tag annotati sono memorizzati come oggetti completi nel database di Git. Registrano il nome, l'email e la data di chi ha creato il tag, contengono un messaggio di tag e possono essere firmati e verificati crittograficamente con GPG (GNU Privacy Guard). Usali per i rilasci e per tutto ciò che condividi con altri.
- I tag leggeri sono semplicemente un nome che punta a un commit — senza metadati aggiuntivi, senza messaggio, senza firma. Si comportano come un segnalibro privato. Usali per marcatori temporanei o locali.
Per le versioni pubblicate, preferisci i tag annotati in modo che la cronologia registri chi ha taggato il rilascio e quando.
Tag annotati
Git memorizza i tag annotati come oggetti completi nel suo database. Contengono metadati aggiuntivi, come il nome, l'email e la data di chi ha creato il tag. Come i commit, i tag annotati includono un messaggio di tag.
Il comando seguente crea un nuovo tag annotato con ID v1.3. L'editor di testo predefinito configurato si aprirà quindi per chiederti di inserire un messaggio di tag.
git annotated tag
git tag -a v1.3Per fornire il messaggio direttamente nella riga di comando e saltare l'editor, usa l'opzione -m:
git annotated tag with inline message
git tag -a v1.3 -m "Release version 1.3"Tag leggeri
Il comando seguente crea un tag leggero identificato come v1.3-lw. I tag leggeri vengono creati senza le opzioni -a, -s o -m. Memorizzano semplicemente un puntatore a un oggetto commit specifico nella directory .git/refs/tags/.
git lightweight tag
git tag v1.3-lwElenco dei tag
Esegui il comando seguente per elencare i tag memorizzati:
git tag command
git tagCome risultato, vedrai un output simile a questo:
git tag output
v0.10.0
v0.10.0-rc1
v0.11.0
v0.11.0-rc1
v0.11.1
v0.11.2
v0.12.0
v0.12.0-rc1
v0.12.1
v0.12.2
v0.13.0
v0.13.0-rc1
v0.13.0-rc2Puoi usare l'opzione -l con un'espressione wildcard per filtrare l'elenco dei tag:
git tag with wildcard
git tag -l *-rc*
v0.10.0-rc1
v0.11.0-rc1
v0.12.0-rc1
v0.13.0-rc1
v0.13.0-rc2
v0.14.0-rc1
v0.9.0-rc1
v15.0.0-rc.1
v15.0.0-rc.2
v15.4.0-rc.3Taggare commit precedenti
Per impostazione predefinita, git tag crea un tag sul commit referenziato da HEAD. Puoi anche passare un riferimento a un commit specifico per taggare un commit più vecchio. Esegui il comando git log per visualizzare i commit precedenti. Nell'esempio seguente viene usato un commit di merge per il nuovo tag. Per fare riferimento a un commit specifico, fornisci il suo hash SHA:
git log
git log --pretty=oneline
29389857951b64cf874c3557a0f3547bd83b899a Merging branch 'crossword'
b4a5697498bd301d84096da251c98a07c7723e65 init method for crossword
89f3aaab4479697da7686c15f77a3d64d9165190 little changes in logic
3a4a271eda8725415634dd79daabbc4d9b6008e Merging branch 'how-it-works'Esegui il comando git tag per creare un nuovo tag annotato con ID v1.2 per il commit selezionato nell'esempio precedente:
git tag for old commits
git tag -a v1.2 29389857951b64cf874c3557a0f3547bd83b899aSostituire tag esistenti
Il tentativo di creare un tag con un identificatore già esistente risulterà in un errore. Usa l'opzione -f (force) per aggiornare un tag esistente, che sovrascriverà il suo contenuto precedente.
git tag replacing old tags
git tag -a -f v1.3 29389857951b64cf874c3557a0f3547bd83b899aInviare tag al repository remoto
I tag non vengono inviati automaticamente con git push — per impostazione predefinita git push trasferisce i commit ma lascia indietro i tag. Devi inviarli esplicitamente affinché chiunque cloni il repository li riceva.
Per inviare un singolo tag, passa il suo nome a git push:
git tag, pushing to remote
git push origin v1.3
Counting objects: 9, done.
Delta compression using up to 5 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (12/12), 2.05 KiB | 0 bytes/s, done.
Total 12 (delta 3), reused 0 (delta 0)
To [email protected]:gr8/gittagdocs.git
* [new tag] v1.3 -> v1.3Per inviare tutti i tag locali che il repository remoto non ha ancora, usa l'opzione --tags:
git push all tags
git push origin --tagsIspezionare un tag
Usa git show per visualizzare i dati memorizzati in un tag. Per un tag annotato, mostra i metadati del tag (chi ha creato il tag, data, messaggio) seguiti dal commit a cui punta:
git show on an annotated tag
git show v1.3
tag v1.3
Tagger: Jane Doe <[email protected]m>
Date: Mon Jun 9 14:21:03 2025 +0000
Release version 1.3
commit 29389857951b64cf874c3557a0f3547bd83b899a
Author: Jane Doe <[email protected]m>
Date: Mon Jun 9 14:18:55 2025 +0000
Merging branch 'crossword'Fare checkout di un tag
Puoi usare il comando git checkout per ispezionare un commit taggato. Questo mette il repository in uno stato di HEAD distaccato — HEAD punta direttamente a un commit invece che a un branch. I nuovi commit che effettui qui non apparterranno a nessun branch e saranno raggiungibili solo tramite il loro hash SHA, quindi possono andare persi quando si passa ad altro.
git tag, checking out a tag
git checkout v1.3Se vuoi continuare a lavorare da quel punto, crea un branch sul posto:
branch from a tag
git checkout -b release-1.3 v1.3Eliminare i tag
Puoi eliminare un tag locale passando l'opzione -d e l'identificatore del tag a git tag. Vedi l'esempio seguente:
git tag, deleting tags
git tag
v1
v2
v3
git tag -d v1
git tag
v2
v3Eliminare un tag localmente non lo rimuove dal repository remoto. Per eliminare un tag anche dal remoto, invia l'eliminazione:
git delete remote tag
git push origin --delete v1Argomenti correlati
- git log — trova il commit che vuoi taggare.
- git push — pubblica i tuoi tag su un repository remoto.
- git branch — trasforma un commit taggato in un branch su cui lavorare.