3

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

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

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

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

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

4

4 回答 4

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
于 2013-07-24T11:50:57.740 回答
1

该模式使用 匹配fnmatch(),它使用shell 通配符模式,而不是正则表达式。

由于 shell 通配符不支持交替,如果不更改describe.

来源:git描述来源:P

于 2013-07-23T15:10:23.247 回答
1

注意:只有 Git 2.15(2017 年第四季度)将允许多种模式:

" git describe --match" 在 v2.13 系列中学会了多模式,但是该功能忽略了第一个之后的模式,根本不起作用。这已得到修复。

请参阅Max Kirillov ( )的提交 da769d2(2017 年 9 月 16 日) 。(由Junio C Hamano 合并 -- --提交 a515136中,2017 年 9 月 28 日)max630
gitster

git describe --long --tags --match="test1-*" --match="test2-*" HEAD^

在你的情况下:

git describe --long --tags --match="TEST*" --match="RUN*"
于 2017-10-14T04:42:30.587 回答
-1

如果我对您的理解正确,您可能可以按照以下方式做一些事情:

/^git describe --tag --dirty --match '(?:TEST|RUN)\*'$/

现场演示和解释:http ://regex101.com/r/qC3gW5

于 2013-07-23T15:09:56.407 回答