【发布时间】:2020-12-20 12:53:53
【问题描述】:
我知道如何使用git describe --tags --abbrev=0 接收最新的 git 版本。但是在我的特殊情况下,我需要之前的版本 ONE。
如果最新版本是v0.0.3,例如我需要获取v0.0.2。
我试图找到一种方法,但我的 shell/git 魔法很弱。
【问题讨论】:
我知道如何使用git describe --tags --abbrev=0 接收最新的 git 版本。但是在我的特殊情况下,我需要之前的版本 ONE。
如果最新版本是v0.0.3,例如我需要获取v0.0.2。
我试图找到一种方法,但我的 shell/git 魔法很弱。
【问题讨论】:
git describe --tags --abbrev=0 HEAD^
HEAD 提交的父级是 HEAD^。使用 --abbrev=0 可以防止将 sha 输出作为描述的一部分,因此只打印第一个找到的标签。
$ git log --oneline
63fbe99 (HEAD -> master, tag: v0.0.2) Add c
3de8c2c Add b
98b2cc4 (tag: v0.0.1) Add a
1fe3ea8 (tag: v0.0.0) Initial commit
$ git describe --tags --abbrev=0
v0.0.2
$ git describe --tags --abbrev=0 HEAD^
v0.0.1
【讨论】:
xetra11@pop-os:~/Development/projects/CK3-Workbench$ git describe --tags --abbrev=0 0.0.14-alpha xetra11@pop-os:~/Development/projects/CK3-Workbench$ git describe --tags --abbrev=0 HEAD^ 0.0.14-alpha
git describe --tags --abbrev=0 v0.0.3~
使用awk 以及您的git 命令,请您尝试关注。
git describe --tags --abbrev=0 | awk 'BEGIN{FS=OFS="."} {$NF-=1} 1'
解释:将git 命令的输出作为输入传递给awk 命令。在awk 代码BEGIN 部分将所有行的字段分隔符和输出字段分隔符设置为.。然后在主程序中在当前行的最后一个字段中减少1。 1 是awk 中打印当前行的方式之一。
【讨论】: