Как перечислить все теги, указывающие на определенный коммит в git - PullRequest
65 голосов
/ 28 декабря 2010

Я видел команды git describe и git-name-rev, но мне не удалось заставить их перечислить более одного тега.

Пример: у меня есть sha1 48eb354, и я знаю теги A иB указывают на это.Поэтому я хочу команду git git {something} 48eb354, которая выдаст вывод, похожий на «A, B».Мне не интересно знать ссылки относительно других тегов или ветвей, просто точные совпадения для тегов.

Ответы [ 5 ]

160 голосов
/ 12 марта 2013

git tag --points-at HEAD

Показывает все теги в HEAD, вы также можете заменить HEAD любым идентификатором sha1.

37 голосов
/ 28 декабря 2010

git show-ref --tags -d | grep ^48eb354 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'

должно работать как для легких, так и для аннотированных тегов

35 голосов
/ 07 ноября 2015

Вы можете использовать:

git tag --contains <commit>

, который показывает все теги при определенной фиксации.Его можно использовать вместо:

git tag --points-at HEAD

, который доступен только с 1.7.10.

4 голосов
/ 28 декабря 2010
<a href="http://www.kernel.org/pub/software/scm/git/docs/git-for-each-ref.html" rel="nofollow">git for-each-ref</a> --format='%(objectname) %(refname:short)' refs/tags/ |
  grep ^<i>$commit_id</i> |
    cut -d' ' -f2

Жаль, что это не может быть сделано легче.Другой флаг на git tag для включения идентификаторов фиксации может выразить этот вызов git for-each-ref естественным образом.

1 голос
/ 28 декабря 2010

Следующая команда выполняет работу, но непосредственно анализирует содержимое каталога .git и, следовательно, может прерваться при изменении формата хранилища git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...