Consolidare alcune delle risposte:
git tag --contains [<ref>]
e
git tag --points-at [<ref>]
o semplicemente
git tag
si comportano allo stesso modo, stampando qualsiasi (e tutti) i tag per il riferimento specificato o il commit corrente se non specificato.
git describe --tags [<ref>]
dove il <ref>
valore predefinito è il commit corrente, esce con 128 se nessun tag è associato al commit e stampa un tag associato al commit (non sembra esserci un pattern).
git describe [<ref>]
si comporta come con --tags
tranne per il fatto che stampa solo i tag annotati.
Fornendo l'opzione --contains
per describe
verrà stampato il tag associato a un antenato del commit specificato. Per esempio
$ git init
Initialized empty Git repository in /tmp/test
$ git commit -m one --allow-empty
[master (root-commit) 7fdfff2] one
$ git commit -m two --allow-empty
[master cd5f8f1] two
$ git tag -am foo foo
$ git tag bar
$ git log --format=oneline
cd5f8f1f4f29eb164f83e224768ccaf37fe170ed (HEAD -> master, tag: foo, tag: bar) two
7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1 one
$ git describe 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
fatal: No tags can describe '7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1'.
Try --always, or create some tags.
$ git describe --contains 7fdfff2ce5e3347f8eee4c9f2413dbd4e90060e1
bar~1
git describe --tags <commit-id>
per tag non