W3docs

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.

gittag

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.3

Per 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-lw

Elenco dei tag

Esegui il comando seguente per elencare i tag memorizzati:

git tag command

git tag

Come 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-rc2

Puoi 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.3

Taggare 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 29389857951b64cf874c3557a0f3547bd83b899a

Sostituire 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 29389857951b64cf874c3557a0f3547bd83b899a

Inviare 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.3

Per inviare tutti i tag locali che il repository remoto non ha ancora, usa l'opzione --tags:

git push all tags

git push origin --tags

Ispezionare 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 distaccatoHEAD 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.3

Se vuoi continuare a lavorare da quel punto, crea un branch sul posto:

branch from a tag

git checkout -b release-1.3 v1.3

Eliminare 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
v3

Eliminare 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 v1

Argomenti 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.

Esercitazione

Pratica
Quali sono le funzionalità e le opzioni del comando 'git tag' in Git?
Quali sono le funzionalità e le opzioni del comando 'git tag' in Git?
Was this page helpful?