Как перечислить все теги, указывающие на определенную фиксацию в git


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

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

5 58

5 ответов:

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

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

git tag --points-at HEAD

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

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

git tag --contains <commit>

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

git tag --points-at HEAD

это доступно только с 1.7.10.

git for-each-ref --format='%(objectname) %(refname:short)' refs/tags/ |
  grep ^$commit_id |
    cut -d' ' -f2

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

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

grep -l -r -e '^48eb354' .git/refs/tags|sed -e 's,.*/,,'