【问题标题】:How to list all Git tags?如何列出所有 Git 标签?
【发布时间】:2010-11-07 01:29:13
【问题描述】:

在我的存储库中,我使用以下命令创建了标签。

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

如何列出存储库中的所有标签?

【问题讨论】:

    标签: git git-tag


    【解决方案1】:
    git tag
    

    应该够了。见git tag man page


    你还有:

    git tag -l <pattern>
    

    列出名称与给定模式匹配的标签(如果没有给出模式,则全部列出)。
    键入不带参数的“git tag”,也会列出所有标签。


    最近(“How to sort git tags?”,适用于 Git 2.0+)

    git tag --sort=<type>
    

    按特定顺序排序。

    支持的类型是:

    • refname”(字典顺序),
    • version:refname”或“v:refname”(标签名称被视为版本)。

    添加“-”来反转排序顺序。


    这两个都列出:

    • annotated tags:存储在 Git 数据库中的完整对象。它们是校验和的;包含标注者姓名、电子邮件和日期;有标签信息;并且可以使用 GNU Privacy Guard (GPG) 进行签名和验证。
    • lightweight tags:指向现有提交的简单指针

    注意:git ready article on tagging 不赞成轻量级标签。

    没有参数,git tag 创建一个“轻量级”标签,基本上是一个永远不会移动的分支。
    尽管如此,轻量级标签仍然很有用,可能用于标记已知的好(或坏)版本,或者您将来可能需要使用的一堆提交。
    不过,您可能不想推送这些类型的标签

    通常,您至少希望通过 -a 选项来创建未签名的标签,或者通过 -s 或 -u 选项使用您的 GPG 密钥对标签进行签名。


    话虽如此,Charles Bailey 指出“git tag -m "..."”实际上暗示了一个正确的(无符号注释)标签(选项“-a”),而不是轻量级标签。所以你很擅长你的初始命令。


    这不同于:

    git show-ref --tags -d
    

    其中列出了带有提交的标签(请参阅“Git Tag list, display commit sha1 hashes”)。
    注意-d,以便取消引用带注释的标记对象(它们有自己的提交 SHA1)并显示实际的标记提交。

    同样,git show --name-only &lt;aTag&gt; 会列出标签和相关的提交。

    【讨论】:

    • 可能值得添加 -m 或 -F 暗示 -a (如果非 -a,-s 或 -u 明确提供。你不能有标签消息没有创建一个'正确' 标记对象。
    • 自我提醒:通过这次投票,我在 Stack Overflow 上通过了 800000(2018 年 8 月 31 日),比 reaching 700000 (Aug 6th, 2017) 晚一年零一个月。
    【解决方案2】:

    列出我喜欢的标签:

    git tag -n
    

    -n 标志与标记一起显示注释消息的第一行,如果标记未注释,则显示第一行提交消息。

    您也可以使用git tag -n5 来显示注释的前 5 行。

    【讨论】:

    • 这是我搜索到列出标签及其描述的解决方案。非常感谢..
    【解决方案3】:

    还有git show-ref比较有用,可以直接把tags和对应的commits关联起来:

    $ git tag
    osgeolive-6.5
    v8.0
    ...
    
    $ git show-ref --tags
    e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
    8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
    ...
    

    【讨论】:

    • 习惯了 Mercurial 的 hg tags 我喜欢 git show-ref 给我的标签和修订。
    【解决方案4】:

    这里是你如何找到远程标签:

    git ls-remote --tags origin

    【讨论】:

    • 正是我一直在寻找的!谢谢你。另外,有没有办法只获取标签名称,因为这个命令会显示完整的 SHA 转储和带有标签的 ref 字符串?
    【解决方案5】:

    在 Git 中列出可用的标签很简单。只需输入git tag(可选-l--list)。

    $ git tag
    v5.5
    v6.5
    

    您还可以搜索与特定模式匹配的标签。

    $ git tag -l "v1.8.5*"
    v1.8.5
    v1.8.5-rc0
    v1.8.5-rc1
    v1.8.5-rc2
    

    获取 git 存储库的最新标签

    该命令查找可从提交中访问的最新标记。如果标签指向提交,则只显示标签。否则,它会在标记名称的后缀加上标记对象顶部的附加提交次数和最近提交的缩写对象名称。

    git describe
    

    --abbrev设置为0,该命令可用于查找最接近的tagname,不带任何后缀:

    git describe --abbrev=0
    

    其他示例:

    git describe --abbrev=0 --tags # gets tag from current branch
    git describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch
    

    如何修剪远程不存在的本地 git 标签

    简单地说,如果你尝试做类似git fetch -p -t 的事情,那么从 git 版本1.9.4 开始它将无法工作。

    但是,有一个简单的解决方法在最新版本中仍然有效:

    git tag -l | xargs git tag -d  // remove all local tags
    git fetch -t                   // fetch remote tags
    

    【讨论】:

    • rev-list 相关命令给了我一个列表,但是以错误结尾:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
    【解决方案6】:

    尝试制作git tag应该足够了,如果不尝试制作git fetch然后是git tag

    【讨论】:

    • 我认为他的意思是:如果您只想查看可用标签列表,运行git tag 命令就足够了。如果您看不到某些您认为可能存在于远程的标签,那么您的本地标签可能与远程不同步。在这种情况下,首先从远程获取最新的 refs/heads git fetch,然后是实际的 git tag。我通常会运行这样的单线:$ git fetch -p &amp;&amp; git tag只是为了确保我看到的是最新最好的。
    【解决方案7】:

    要查看我有时使用的最新可用标签的详细信息:

    git show `git describe` --pretty=fuller
    

    【讨论】:

      【解决方案8】:

      如果要在本地检查标签名称,则必须转到创建标签的路径(本地路径)。 表示您放置对象的位置。 然后输入命令:

      git show --name-only <tagname>
      

      它将显示该标签名称下的所有对象。 我在 Teradata 工作,对象意味着视图、表格等

      【讨论】:

        【解决方案9】:

        您可以列出所有现有标签git tag,也可以使用git tag -l 'v1.1.*' 过滤列表,其中* 充当通配符。它将返回标有v1.1 的标签列表。

        您会注意到,当您调用git tag 时,您看不到注释的内容。要预览它们,您必须将-n 添加到您的命令中:git tag -n2

        $ git tag -l -n2
        

        v1.0 发布版本 1.0

        v1.1 发布版本 1.1

        该命令列出所有现有标签,标签消息最多为 3 行。默认情况下-n 只显示第一行。如需更多信息,请务必查看this tag related article

        【讨论】:

          【解决方案10】:

          对于执行此操作的 GUI,我刚刚发现 'gitk' 支持命名视图。 这些视图有几个选择提交的选项。一个方便的是一个盒子 选择“所有标签”。 看到标签似乎对我有用。

          【讨论】:

            猜你喜欢
            • 2021-12-14
            • 2011-05-31
            • 2011-07-18
            • 2011-09-10
            • 1970-01-01
            • 2019-01-07
            • 1970-01-01
            • 2016-06-29
            • 2011-09-10
            相关资源
            最近更新 更多