首页 > 解决方案 > 认识到我不在带有 bash 的 git 标签上

问题描述

我想要一个 bash 脚本,它可以识别调用者是否不在 git 标签上(但在未标记的分支上,例如)。我尝试了以下方法:

OUTPUT=$(git describe --exact-match --tags $(git log -n1 --pretty='%h')|grep "fatal:")
if [[ $OUTPUT != "0" ]]; then
    echo "no tag present"
fi

no tag present即使明显有标签并且打印出来的内容git describe --exact-match --tags $(git log -n1 --pretty='%h')不包含fatal: ,我也会得到。为什么这不能按预期工作?

标签: bashgitshell

解决方案


如果更容易依赖该命令的退出状态:

if ! git describe --exact-match --tags $(git log -n1 --pretty='%h') 1>/dev/null 2>&1; then
   echo "no tag present"
fi

如果没有标签,则退出状态为 128。
如果有,则存在状态为 0。

jthill在评论中建议:

if msg=`git describe --exact-match --tags @ 2>&1`; then 
    echo tagged $msg; 
else 
    echo not tagged; 
fi

推荐阅读