J'ai vu les commandes git describe
et git-name-rev
mais je n'ai pas réussi à leur faire lister plus d'une balise.
Exemple: j'ai le sha1 48eb354 et je sais que les balises A et B le désignent. Je veux donc une commande git git {something} 48eb354
qui produisent une sortie similaire à "A, B". Je ne suis pas intéressé à connaître les références relatives à d'autres balises ou branches juste des correspondances exactes pour les balises.
git show-ref --tags -d | grep ^48eb354 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'
devrait fonctionner pour les balises légères et annotées.
git tag --points-at HEAD
Affiche toutes les balises sur HEAD, vous pouvez également remplacer HEAD par n'importe quel id sha1.
Vous pouvez utiliser:
git tag --contains <commit>
qui affiche toutes les balises à certains commit. Il peut être utilisé à la place de:
git tag --points-at HEAD
qui n'est disponible qu'à partir du 1.7.10.
git for-each-ref --format='%(objectname) %(refname:short)' refs/tags/ |
grep ^$commit_id |
cut -d' ' -f2
Dommage que cela ne puisse pas être fait plus facilement. Un autre drapeau sur git tag
pour inclure les ID de validation pourrait exprimer que git for-each-ref
invocation naturellement.
La commande suivante fait le travail, mais analyse directement le contenu du répertoire .git et peut donc se casser si le format du référentiel git change.
grep -l -r -e '^48eb354' .git/refs/tags|sed -e 's,.*/,,'