0

我有一个名为“a_tag-30”的 git 标记,我想找到最后一个标记并使用 sed 或 perl 表达式将其增加 1,因此结果将是“a_tag-31”。有人可以帮我吗?

4

2 回答 2

1

以下 git 命令获取所有匹配模式“a_tag-*”的标签,通过“-taggerdate”键按降序排序。

git tag --list 'a_tag-*' --sort=-taggerdate | head -1 | awk -F- '{print "a_tag-" $NF+1}'

然后将第一行馈送到 awk 命令,其中“-”用作字段分隔符。因此 $NF 位置参数(即 NF 表示字段数,它是 awk 中的预定义变量)保存最后一个字段的值。

最后通过将 $NF 加 1 来打印新的标签值。

于 2019-10-14T08:06:07.307 回答
0

使用 bash 中的实用程序组合,这种事情是最简单的。例如:

echo "a_tag-$(($(git tag --list 'a_tag-*' 
    | sed -e 's/^.*-\([0-9]*\)/\1/'  
    | sort -nr
    | head -1) + 1))" > output

这会将新标签写入output.

除了具有前缀“a_tag”外,它还假定您的所有标签都以破折号结尾,后跟一个数字。

于 2019-10-14T07:24:20.420 回答