Sinossi
git describe [--tags] [--always] [--dirty] [<commit>]
Descrizione
Il comando git describe produce un nome leggibile dall'uomo per un commit basato sul tag raggiungibile più recente. L'output appare come v1.4.2-13-gabc1234, che significa "13 commit dopo il tag v1.4.2, allo SHA abc1234". Se il commit è esattamente a un tag, viene stampato solo il nome del tag.
I sistemi di build usano git describe per incorporare stringhe di versione nei binari. Con --dirty, l'output include un suffisso -dirty quando la working tree ha modifiche non committate — perfetto per marcare build di sviluppo.
Nell'uso quotidiano, git describe si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--tags | Usa anche tag lightweight oltre agli annotated. |
--always | Ricade su SHA abbreviato se nessun tag è raggiungibile. |
--dirty[=<mark>] | Aggiunge un marker se la working tree è sporca. |
--long | Mostra sempre il formato lungo, anche quando a un tag. |
--match <pattern> | Considera solo tag che corrispondono a un glob. |
--abbrev=<n> | Usa n cifre esadecimali per lo SHA. |
--contains | Mostra il primo tag che contiene il commit. |
Esempi
git describe
# es. v2.1.0-3-g1a2b3c4
git describe --tags --dirty --always
# Stringa di versione robusta per script di build
git describe --match 'v[0-9]*'
# Considera solo tag stile semver
git describe --contains abc123
# Trova la prima release che include un commit
Errori comuni
Se il tuo repo ha solo tag lightweight (non annotated), git describe dice "fatal: No names found." Usa --tags. I clone shallow possono non avere tag raggiungibili affatto — scarica i tag esplicitamente con git fetch --tags.
Comandi correlati
git tag, git log, git rev-parse, git show