Bash 从Git中提取最新的标记版本

Bash 从Git中提取最新的标记版本,bash,git-bash,Bash,Git Bash,我想提取Git存储库的最新版本号。这就是我迄今为止所做的: #--- Checking out latest tag printf "%bChecking out tag...%b\n" "${YELLOW}" "${GRAY}" LATEST_TAG=$(git describe --tags) printf "\nChecking out tag %b${LATEST_TAG}%b\n" "${YELLOW}" "${GRAY}" git checkout -b V${LATEST_TAG%

我想提取Git存储库的最新版本号。这就是我迄今为止所做的:

#--- Checking out latest tag
printf "%bChecking out tag...%b\n" "${YELLOW}" "${GRAY}"
LATEST_TAG=$(git describe --tags)
printf "\nChecking out tag %b${LATEST_TAG}%b\n" "${YELLOW}" "${GRAY}"
git checkout -b V${LATEST_TAG%-*} ${LATEST_TAG}
我的问题是,如果
git descripe--tags
返回这样的
1.0.0-39-gf8f8306
我最终创建了一个分支
V1.0.0-39


我想创建一个名为
V1.0.0
的分支,您可以使用
awk

LATEST_TAG=$(git describe --tags | awk -F - '{print $1}')

您可以使用
awk

LATEST_TAG=$(git describe --tags | awk -F - '{print $1}')
你行吗

git checkout-bv${LATEST\u TAG%-*}${LATEST\u TAG}

您可以将%符号加倍,它将匹配以-开头的最长字符串,而不是最短的字符串,而最短的字符串正是单个%所做的

例如
git checkout-bv${LATEST_TAG%%-*}${LATEST_TAG}

您可以在此处看到参数扩展的完整列表:

在您的行中

git checkout-bv${LATEST\u TAG%-*}${LATEST\u TAG}

您可以将%符号加倍,它将匹配以-开头的最长字符串,而不是最短的字符串,而最短的字符串正是单个%所做的

例如
git checkout-bv${LATEST_TAG%%-*}${LATEST_TAG}

您可以在这里看到完整的参数扩展列表:

这有点秘密,*但您可以使用
--abbrev=0

git describe --tags --abbrev=0

*提到它,但你必须知道去哪里看:

--abbrev=

[…]0的
将抑制长格式,仅显示最近的标记

这有点秘密,*但您可以使用
--abbrev=0

git describe --tags --abbrev=0

*提到它,但你必须知道去哪里看:

--abbrev=

[…]0的
将抑制长格式,仅显示最近的标记


我对GitHub操作的git descripe有一个问题,即:“致命:没有标签可以描述‘160ef4560d8855c9c05f4cae207baeb71b7791f3’”,这显然与整个回购协议不可用有关

但我找到了另一个可行的解决方案,没有这个问题:

git tag --sort=-refname --list "v[0-9]*" | head -n 1

我对GitHub操作的git descripe有一个问题,即:“致命:没有标签可以描述‘160ef4560d8855c9c05f4cae207baeb71b7791f3’”,这显然与整个回购协议不可用有关

但我找到了另一个可行的解决方案,没有这个问题:

git tag --sort=-refname --list "v[0-9]*" | head -n 1

非常感谢你。请加上它作为答案。非常感谢。请将其添加为答案。有效,但我将接受Biffen答案,因为它是最短的。有效,但我将接受Biffen答案,因为它是最短的。有效,但我将接受Biffen答案。有效,但我将接受Biffen答案