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

我想要git列出所有的标签以及完整的注释或提交信息。 像这样的东西是接近的:

git tag -n5 

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

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

更新 :我有很多时间来思考这个问题,现在我想我不一定要显示整个消息,如果它是非常长的。 像这样的东西似乎对我很好:

 git tag -n99 

如果标签信息超过99行,我不希望看到全部。 但Git是非常复杂和灵活的。 在什么情况下,这不是最好的解决scheme? 我注意到很多发布的解决scheme都使用了-l otion,但是这不仅仅是指定要search的模式吗?

尝试一下,它会列出所有标签以及每个标签的注释和9条消息:

 git tag -n9 

也可以使用

 git tag -l -n9 

如果特定标签要列出:

 git tag -l -n9 v3.* 

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

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

 git tag -n99 

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

Mark Longair的回答 (使用git show )接近于问题中所期望的。 但是,它还包含标记指向的提交以及该提交的完整修补程序。 由于提交可能与标签有些不相关(它只是一个提交标签试图捕获),这可能是不可取的。 我相信以下几点更好:

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

这远非漂亮,但你可以创build一个脚本或一个别名,这样做:

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

仅限上次标记消息:

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

我更喜欢在命令行上这样做,但是如果您不介意使用Web界面并使用Gi​​tHub,则可以访问https://github.com/user/repo/tags并单击“…”下一步给每个标签显示其注释。