Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
--tagsUsa anche tag lightweight oltre agli annotated.
--alwaysRicade su SHA abbreviato se nessun tag è raggiungibile.
--dirty[=<mark>]Aggiunge un marker se la working tree è sporca.
--longMostra 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.
--containsMostra 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