web-dev-qa-db-fra.com

Comment lister toutes les balises pointant vers un commit spécifique dans git

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.

66
Zitrax

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.

39
max

git tag --points-at HEAD

Affiche toutes les balises sur HEAD, vous pouvez également remplacer HEAD par n'importe quel id sha1.

163
user2159398

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.

37
yorammi
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.

4
Aristotle Pagaltzis

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,.*/,,'
1
Sylvain Defresne