我想要git列出所有标签连同完整的注释或提交消息。类似这样的事情很接近:

git tag -n5

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

我想我可以用一个很大的数。这里最大的数是多少?每台电脑都一样吗?

UPDATE: I have had much time to think about this, and now I think I don't necessarily want to show the entirety of each message if some of them are extraordinarily long. I didn't really have any particular need that required me to see massive messages (other than my own propensity to be long winded in everything I write, including tag messages). I just didn't like the idea that it was not necessarily going to show me the whole message, as that made me feel like it was hiding information from me. But too much information can also be a bad thing.


当前回答

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

git tag -n9

也可以用

git tag -l -n9

如果要列出特定的标签:

git tag -l -n9 v3.*

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

-l,——list 列出与给定模式匹配的名称的标签(如果没有给出模式,则全部匹配)。 运行不带参数的"git tag"也会列出所有标签。模式是一个shell通配符 (即使用fnmatch(3)进行匹配)。可以给出多个模式;如果有的话 匹配时,显示标记。

其他回答

使用此命令可以显示标签的消息

git tag -n

-n选项用于显示消息。

使用——format选项

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

or

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

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

%(contents:subject)将只输出第一行 %(内容:正文)将输出没有第一行和签名的注释(仅有用文本) %(内容:签名)将只输出pgp签名

详见man get -for-each-ref“字段名”部分。

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

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

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

git tag -n9

也可以用

git tag -l -n9

如果要列出特定的标签:

git tag -l -n9 v3.*

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

-l,——list 列出与给定模式匹配的名称的标签(如果没有给出模式,则全部匹配)。 运行不带参数的"git tag"也会列出所有标签。模式是一个shell通配符 (即使用fnmatch(3)进行匹配)。可以给出多个模式;如果有的话 匹配时,显示标记。