我尝试用标签过滤git log。我试过使用--tags="3.5.0",根据文档,但它不工作,因为它返回所有提交,包括标签之前和之后。我该怎么用这个?
--tags="3.5.0"
xj3cbfub1#
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中,以便实际查看与提交相关的标记。
--decorate
git log
wnavrhmk2#
我在我自己的项目中遇到了(我认为)同样的问题。在我的例子中,我有几个标记“类别”,每个都有自己的特定版本,当我成功构建时,我想找到最近的标记,提取版本,递增它,并用新的版本标识符标记当前提交。我不是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
git log --format='%D' | sed -n "/^tag: .*$tagRegex/ {s/.*-v//; p;q;}";
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只显示提交消息的哈希值。
\sprojectRegex.*$
3条答案
按热度按时间xj3cbfub1#
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
中,以便实际查看与提交相关的标记。wnavrhmk2#
我在我自己的项目中遇到了(我认为)同样的问题。在我的例子中,我有几个标记“类别”,每个都有自己的特定版本,当我成功构建时,我想找到最近的标记,提取版本,递增它,并用新的版本标识符标记当前提交。
我不是100%清楚你的目标,但这里有一些代码,它会吐出标签与指定正则表达式匹配的 * 最近 * 提交id:
category-v1.2.3
,我对标记附加的语义版本感兴趣,而不是提交ID,所以我使用以下代码:juzqafwq3#
我也遇到过类似的问题,最后我找到了这里。我的解决方案是扩展其他答案,得到:
它会显示一个git log样式的历史记录,记录到和HEAD之间的所有提交,这些提交的标签(如果你不走运的话,也可以是提交哈希--你可以使用一个带空格前缀的正则表达式来解决这个问题,因为标签不能包含空格--例如
\sprojectRegex.*$
)匹配。逐管解释
1.获取commitId和HEAD之间的提交哈希和标记。
1.按标记过滤,因为它们现在表示为字符串。
1.提取匹配的提交哈希。
1.使用git show只显示提交消息的哈希值。