我正在尝试按标签过滤git log。我根据documentation尝试使用--tags="3.5.0"
,但它不起作用,因为它返回标记之前和之后的所有提交。
我想如何使用它?
答案 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;}";