【问题标题】:How to list all tags pointing to a specific commit in git如何列出指向git中特定提交的所有标签
【发布时间】:2011-05-31 12:43:15
【问题描述】:

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

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

【问题讨论】:

    标签: git tags


    【解决方案1】:

    对于当前提交,您可以使用

    git tag --points-at $(git log -n1 --pretty='%H')
    

    【讨论】:

    • 只需使用HEAD 而不是$(git log -n1 --pretty='%H')
    【解决方案2】:

    你可以使用:

    git tag --contains <commit>
    

    显示特定提交时的所有标签。 它可以用来代替:

    git tag --points-at HEAD
    

    仅从 1.7.10 开始可用。

    【讨论】:

    • 注意:'git tag --contains' 不仅显示指向提交的标签,还包括任何以后可以访问的标签。
    • 至少在 2.6.4 版本中,这只返回一个指向指定提交的标签。它不会全部归还。 @max 上面的答案似乎适用于多个标签。
    • --contains 也比--points-at 慢得多(7-8s 执行时间 vs
    【解决方案3】:

    git tag --points-at HEAD

    在 HEAD 处显示所有标签,您也可以将 HEAD 替换为任何 sha1 id。

    【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 谢谢。正是我想要的。
    • 这适用于 git -e 's/\^{}//'
    • 啊,没关系,想通了。它适用于git show-ref 上的-d 选项。从文档中,“-d, --dereference 取消引用标记到对象 ID 中。它们将显示为附加“^{}”。”
    • 对使用任意${ref} 的轻微增强/概括,包括注释标签:hash=$(git rev-parse "${ref}^0"); git show-ref --tags -d | sed -n -e 's,^'"${hash}"' refs/tags/\(.*\)^{}$',\1,p'
    【解决方案5】:

    以下命令可以完成这项工作,但直接解析 .git 目录的内容,因此如果 git 存储库格式更改可能会中断。

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

    【讨论】:

    • 也没有列出它们,如果 grepping 整个 .git 文件夹,我看到 sha1 的唯一地方是 gitk.cache 和 logs/refs/remotes/origin/master。为什么 gitk 可以列出它们?我还注意到我正在查看的标签是带注释的标签,这可能就是为什么当前的两个答案对我不起作用的原因。
    【解决方案6】:
    @987654321@ --format='%(objectname) %(refname:short)' refs/tags/ |
      grep ^$commit_id |
        cut -d' ' -f2

    可惜不能更轻松地完成。 git tag 上包含提交 ID 的另一个标志可以自然地表达 git for-each-ref 调用。

    【讨论】:

    • 感谢您的信息,但我似乎也无法使用此命令查看标签。使用更简单的“git for-each-ref | grep 48eb354”给出 0 个匹配项。另一方面,gitk 很好地列出了这个提交前面的 2 个标签。
    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 2011-12-16
    • 2015-12-25
    • 1970-01-01
    • 2017-05-30
    • 2014-09-11
    • 1970-01-01
    • 2010-12-24
    相关资源
    最近更新 更多