如何在git中列出指向特定提交的所有标记

我已经看到了命令git describegit-name-rev但我没有设法让他们列出多个标签。

例如:我有sha1 48eb354,我知道标签A和B指向它。 所以我想要一个git命令git {something} 48eb354 ,产生类似于“A,B”的输出。 我不知道引用相对于其他标签或分支只是完全匹配的标签。

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

应该适用于轻量级和带注释的标签。

git tag --points-at HEAD

显示HEAD中的所有标签,也可以用任何sha1标识代替HEAD。

您可以使用:

 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上包含commit ID的另一个标志可以自然地表示这个git for-each-ref调用。

下面的命令执行这个工作,但直接parsing.git目录的内容,因此如果git存储库格式发生变化,可能会中断。

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