如何按标签过滤git log?

时间:2017-08-01 13:34:26

标签: git

我正在尝试按标签过滤git log。我根据documentation尝试使用--tags="3.5.0",但它不起作用,因为它返回标记之前和之后的所有提交。

我想如何使用它?

2 个答案:

答案 0 :(得分:3)

过滤器可能包含任何内容。例如,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以实际查看与提交相关联的标记。

答案 1 :(得分:0)

我在自己的项目中遇到了同样的问题。就我而言,我有几个标记“类别”,每个标记都有其特定的版本控制,当成功构建后,我想找到最新的标记,提取版本,对其进行递增,并使用该新标记标记当前的提交。版本标识符。

我还没有100%明确您的目标,但是下面的代码会吐出最新提交ID,其标签与指定的正则表达式匹配:

tagRegex='foo'; # fill in your tag pattern here
git log --format='%h %D' | sed -n "/ tag: .*$tagRegex/ {s/ .*//; p;q;}";

我的标签的格式为category-v1.2.3,我对附加在标签上的语义版本感兴趣,而不是提交ID感兴趣,所以我使用以下代码:

git log --format='%D' | sed -n "/^tag: .*$tagRegex/ {s/.*-v//; p;q;}";