如何在git中搜索标签注释的内容?
How do I search the content of tag annotations in git?
我即将发布我的第一个 git 管理项目的第一个版本,我将使用带注释的标签 ("first alpha release") 对其进行标记。后来,为了找出第一个 alpha 版本,我想在标签注释的内容中搜索 "first alpha"。我该怎么做?
我知道 git log --grep
会搜索提交消息的内容,git show
会告诉我标签注释的内容,但我无法从联机帮助页或 Google 什么命令将搜索标签注释。我是否必须转储存储标签注释的记录并使用其他工具进行搜索?我正在设想 git show $(git tag)|grep "first alpha"
并希望有更好的方法。
您需要在 dereferenced tag 上 git show
来探索带注释的标签“first alpha release
”的内容:
git show $(git show-ref -d -s --tags "first tag release"|tail -1| awk '{print }')
也就是说,git 直接显示标签会得到相同的结果,除了首先显示的标签元数据。
git show $(git tag|grep "first alpha")
这将显示标签名称包含"first alpha"的所有标签的内容。
这确实使用了外部 grep
但似乎比解析 git show:
的输出更优雅
git tag -l -n | grep "first alpha"
你会得到非常好的输出:
test_1.2.3 first alpha
注意 -n 标志,这里我假设您的注释只有一行。对于较长的消息,您需要在 -n 之后给出一个数字(比如 -n99),并且在 grep 标志方面会更加复杂。
https://www.kernel.org/pub/software/scm/git/docs/git-tag.html
搜索多行注释的一种方法是使用 gawk
(显示的示例 bash
命令行):
git tag -l -n99 | gawk -v pat='<some regex>' -- '/^\S/ {tag=} [=10=]~pat { print tag }'
/^\S/ {tag=}
依次保存每个标签名,[=17=]~pat { print tag }'
找到匹配时打印标签名。
我即将发布我的第一个 git 管理项目的第一个版本,我将使用带注释的标签 ("first alpha release") 对其进行标记。后来,为了找出第一个 alpha 版本,我想在标签注释的内容中搜索 "first alpha"。我该怎么做?
我知道 git log --grep
会搜索提交消息的内容,git show
会告诉我标签注释的内容,但我无法从联机帮助页或 Google 什么命令将搜索标签注释。我是否必须转储存储标签注释的记录并使用其他工具进行搜索?我正在设想 git show $(git tag)|grep "first alpha"
并希望有更好的方法。
您需要在 dereferenced tag 上 git show
来探索带注释的标签“first alpha release
”的内容:
git show $(git show-ref -d -s --tags "first tag release"|tail -1| awk '{print }')
也就是说,git 直接显示标签会得到相同的结果,除了首先显示的标签元数据。
git show $(git tag|grep "first alpha")
这将显示标签名称包含"first alpha"的所有标签的内容。
这确实使用了外部 grep
但似乎比解析 git show:
git tag -l -n | grep "first alpha"
你会得到非常好的输出:
test_1.2.3 first alpha
注意 -n 标志,这里我假设您的注释只有一行。对于较长的消息,您需要在 -n 之后给出一个数字(比如 -n99),并且在 grep 标志方面会更加复杂。 https://www.kernel.org/pub/software/scm/git/docs/git-tag.html
搜索多行注释的一种方法是使用 gawk
(显示的示例 bash
命令行):
git tag -l -n99 | gawk -v pat='<some regex>' -- '/^\S/ {tag=} [=10=]~pat { print tag }'
/^\S/ {tag=}
依次保存每个标签名,[=17=]~pat { print tag }'
找到匹配时打印标签名。