如何在git中搜索标签注释的内容?

cxw*_*cxw 2 tags git version-control full-text-search release-management

我即将发布我的第一个git-managed项目的第一个版本,并将使用带注释的标签("first alpha release")标记它.稍后,为了找出哪个是第一个alpha版本,我想搜索标签注释的内容为"first alpha".我该怎么办?

我知道git log --grep会搜索提交消息的内容并git show告诉我标签注释的内容,但是我无法从联机帮助页或Google中找出什么命令会对标签注释进行搜索.我是否必须转储存储标记注释的记录并使用其他工具进行搜索?我在想象git show $(git tag)|grep "first alpha"并希望有更好的方法.

Cha*_*l P 5

这确实使用外部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=$1} $0~pat { print tag }'
Run Code Online (Sandbox Code Playgroud)

/^\S/ {tag=$1}依次保存每个标记名称,并$0~pat { print tag }'在找到匹配项时打印标记名称.