git匹配多个单词的标签

时间:2013-07-23 14:55:43

标签: regex git grep

我们可以得到最后一个git标签,它以一个单词开头(例如TEST),如下所示:

git describe --tag --dirty --match 'TEST*'

我想知道如何获得最后一个标签,它以word1 word2开头(例如TEST OR RUN)? 我试过使用正则表达式或以下但它不起作用:

  

git describe --tag --dirty --match'TEST * | RUN *'

解: 我们可以获得HEAD的提交次数并比较这些数字,提交次数较少的是最近的。您可以在我已添加的答案中找到它的脚本。

4 个答案:

答案 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 da769d2Max 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