如何在git中列出所有标签以及完整的消息?

时间:2011-03-18 22:11:04

标签: git tags git-tag

我希望git列出所有标签以及完整的注释或提交消息。这样的事情很接近:

git tag -n5

这正是我想要的,除了它只显示标签消息的前5行。

我想我可以使用非常大的数字。我在这里可以使用的最高数字是多少?每台电脑都一样吗?

更新:我有很多时间考虑这个问题,现在我觉得如果时间非常长,我不一定要展示整条信息。这样的事似乎适合我:

git tag -n99

如果标签消息真的长于99行,我不想看到所有这些。但是Git极其复杂和灵活。在什么情况下,这不是最好的解决方案?我注意到许多已发布的解决方案都使用了-l otion,但这不只是指定要搜索的模式吗?

9 个答案:

答案 0 :(得分:292)

尝试此操作会列出所有标签以及注释&每个标签有9行消息:

git tag -n9

也可以使用

git tag -l -n9

如果要列出特定标签:

git tag -l -n9 v3.*

(例如,上面的命令只显示以“v3。”开头的标签。)

-l, - list            列出名称与给定模式匹配的标记(如果没有给出模式,则列出所有标记)。            不带参数运行“git tag”也会列出所有标签。该模式是shell通配符            (即,使用fnmatch(3)匹配)。可以给出多种模式;如果他们中的任何一个            匹配,标签显示。

答案 1 :(得分:89)

git tag -n99

短而甜蜜。这将从注释/提交消息中列出最多99行。以下是git tag官方文档的链接:http://git-scm.com/docs/git-tag

答案 2 :(得分:24)

Mark Longair's answer(使用git show)接近问题所需的内容。但是,它还包括标记指向的提交,以及该提交的完整修补程序。由于提交可能与标记有些无关(它只是标记试图捕获的一次提交),因此这可能是不合需要的。我相信以下内容更好一点:

for t in `git tag -l`; do git cat-file -p `git rev-parse $t`; done

答案 3 :(得分:11)

它远非漂亮,但您可以创建一个脚本或别名来执行以下操作:

for c in $(git for-each-ref refs/tags/ --format='%(refname)'); do echo $c; git show --quiet "$c"; echo; done

答案 4 :(得分:9)

仅限最后一个标记消息:

git cat-file -p $(git rev-parse $(git tag -l | tail -n1)) | tail -n +6

答案 5 :(得分:2)

我更喜欢在命令行上执行此操作,但如果您不介意使用网页界面并使用Gi​​tHub,则可以访问https://github.com/user/repo/tags并点击每个标记旁边的“...”进行显示它的注释。

答案 6 :(得分:1)

git tag -l --format='%(contents)'

git for-each-ref refs/tags/ --format='%(contents)'

将为每个标签输出完整的注释消息(包括已签名的签名)。

  • %(contents:subject)仅输出第一行
  • %(contents:body)将输出不带第一行和签名的注释(仅适用于文本)
  • %(contents:signature)将仅输出PGP签名

man git-for-each-ref “Field names” section中查看更多信息。

答案 7 :(得分:1)

“git tag -n”怎么样 Jhu 先生对此做出了贡献。

答案 8 :(得分:0)

使用--format选项

git tag -l --format='%(tag) %(subject)'