我希望git列出所有标签以及完整的注释或提交消息。这样的事情很接近:
git tag -n5
这正是我想要的,除了它只显示标签消息的前5行。
我想我可以使用非常大的数字。我在这里可以使用的最高数字是多少?每台电脑都一样吗?
更新:我有很多时间考虑这个问题,现在我觉得如果时间非常长,我不一定要展示整条信息。这样的事似乎适合我:
git tag -n99
如果标签消息真的长于99行,我不想看到所有这些。但是Git极其复杂和灵活。在什么情况下,这不是最好的解决方案?我注意到许多已发布的解决方案都使用了-l
otion,但这不只是指定要搜索的模式吗?
答案 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)
我更喜欢在命令行上执行此操作,但如果您不介意使用网页界面并使用GitHub,则可以访问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签名答案 7 :(得分:1)
“git tag -n”怎么样 Jhu 先生对此做出了贡献。
答案 8 :(得分:0)
使用--format选项
git tag -l --format='%(tag) %(subject)'