如何通过标签过滤git日志?

vmdwslir  于 2022-11-20  发布在  Git
关注(0)|答案(3)|浏览(248)

我尝试用标签过滤git log。我试过使用--tags="3.5.0",根据文档,但它不工作,因为它返回所有提交,包括标签之前和之后。
我该怎么用这个?

xj3cbfub

xj3cbfub1#

  • Filter* 可以包含任何内容。例如,git log 3.5.0将给予该标签之前的所有提交。git log 3.4.0..3.5.0将输出这些标签之间的所有提交。如果你只想查看某个标签的提交,请使用git show 3.5.0。如果你必须查看所有标签及其各自的提交,可以使用git tag -l | xargs git show

另外,不要忘记将--decorate添加到git log中,以便实际查看与提交相关的标记。

wnavrhmk

wnavrhmk2#

我在我自己的项目中遇到了(我认为)同样的问题。在我的例子中,我有几个标记“类别”,每个都有自己的特定版本,当我成功构建时,我想找到最近的标记,提取版本,递增它,并用新的版本标识符标记当前提交。
我不是100%清楚你的目标,但这里有一些代码,它会吐出标签与指定正则表达式匹配的 * 最近 * 提交id:

tagRegex='foo'; # fill in your tag pattern here
git log --format='%h %D' | sed -n "/ tag: .*$tagRegex/ {s/ .*//; p;q;}";
  • My* 标记的形式是category-v1.2.3,我对标记附加的语义版本感兴趣,而不是提交ID,所以我使用以下代码:
git log --format='%D' | sed -n "/^tag: .*$tagRegex/ {s/.*-v//; p;q;}";
juzqafwq

juzqafwq3#

我也遇到过类似的问题,最后我找到了这里。我的解决方案是扩展其他答案,得到:

git log <commitId>..HEAD --format='%h %D' | grep '<projectRegex>' | awk '{print $1}' | xargs git show --no-patch

它会显示一个git log样式的历史记录,记录到和HEAD之间的所有提交,这些提交的标签(如果你不走运的话,也可以是提交哈希--你可以使用一个带空格前缀的正则表达式来解决这个问题,因为标签不能包含空格--例如\sprojectRegex.*$)匹配。
逐管解释
1.获取commitId和HEAD之间的提交哈希和标记。
1.按标记过滤,因为它们现在表示为字符串。
1.提取匹配的提交哈希。
1.使用git show只显示提交消息的哈希值。

相关问题