我看过命令git describe
和git-name-rev
,但我还没有设法让它们列出多个标签。
示例:我有sha1 48eb354,我知道标签A和B指向它。所以我想要一个git命令git {something} 48eb354
,它产生类似于“A,B”的输出。我不想知道相对于其他标签或分支的引用只是标签的完全匹配。
答案 0 :(得分:155)
git tag --points-at HEAD
在HEAD显示所有标签,您也可以用任何sha1 id替换HEAD。
答案 1 :(得分:37)
git show-ref --tags -d | grep ^48eb354 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'
应适用于轻量级和带注释的标签。
答案 2 :(得分:33)
您可以使用:
git tag --contains <commit>
显示特定提交时的所有标记。 它可以代替:
git tag --points-at HEAD
仅适用于1.7.10。
答案 3 :(得分:4)
git for-each-ref --format='%(objectname) %(refname:short)' refs/tags/ |
grep ^$commit_id |
cut -d' ' -f2
可惜它不能轻易完成。 git tag
上包含提交ID的另一个标志可以自然地表达git for-each-ref
调用。
答案 4 :(得分:1)
以下命令执行该作业,但直接解析.git目录的内容,因此如果git存储库格式发生更改,则可能会中断。
grep -l -r -e '^48eb354' .git/refs/tags|sed -e 's,.*/,,'
答案 5 :(得分:1)
对于当前提交,您可以使用
git tag --points-at $(git log -n1 --pretty='%H')