我们可以得到最后一个git标签,它以一个单词开头(例如TEST),如下所示:
git describe --tag --dirty --match 'TEST*'
我想知道如何获得最后一个标签,它以word1 或 word2开头(例如TEST OR RUN)? 我试过使用正则表达式或以下但它不起作用:
git describe --tag --dirty --match'TEST * | RUN *'
解: 我们可以获得HEAD的提交次数并比较这些数字,提交次数较少的是最近的。您可以在我已添加的答案中找到它的脚本。
答案 0 :(得分:1)
使用fnmatch()
匹配模式,shell wildcard patterns使用git describe source,而非正则表达式。
由于shell通配符不支持替换,因此如果不更改describe
的实现,则无法执行此操作。
来源:{{3}}:P
答案 1 :(得分:1)
我们可以获得HEAD的提交次数并比较这些数字,提交次数较少的提交是最近的,如下所示:
#!/bin/bash
V_TEST=$(git describe --tag --dirty --match 'TEST*' | awk 'BEGIN { FS = "-" }; {print $2}')
V_RUN=$(git describe --tag --dirty --match 'RUN*' | awk 'BEGIN { FS = "-" }; {print $2}')
if [[ $V_TEST -gt $V_RUN ]] ; then
VERSION=$(git describe --tag --dirty --match 'RUN*')
echo $VERSION
else
VERSION=$(git describe --tag --dirty --match 'TEST*')
fi
echo $VERSION
答案 2 :(得分:0)
注意:只有Git 2。5(2017年第4季度)才允许多种模式:
“
git describe --long --tags --match="test1-*" --match="test2-*" HEAD^
”学会了在v2.13中采用多种模式 系列,但该功能忽略了第一个之后的模式 并没有工作。这已得到修复。
commit da769d2见Max Kirillov (max630
)(2017年9月16日)
(Junio C Hamano -- gitster
--合并于commit a515136,2017年9月28日)
git describe --long --tags --match="TEST*" --match="RUN*"
在你的情况下:
{{1}}
答案 3 :(得分:-1)
如果我理解正确,你可能会做一些事情:
/^git describe --tag --dirty --match '(?:TEST|RUN)\*'$/
现场演示和解释:http://regex101.com/r/qC3gW5