如何从git标签读取标记信息?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (51)

到目前为止,我已经:

git rev-parse <tagname> | xargs git cat-file -p

但这并不是最容易分析的东西。我希望能有类似的东西git-log --pretty选择这样我就能得到我需要的信息了。

有什么想法吗?谢谢

提问于
用户回答回答于

获取相同信息的一个更直接的方法是:

git cat-file tag <tagname>

这使用了一个命令,并避免了管道。

我在bash脚本中使用了以下内容:

if git rev-parse $TAG^{tag} -- &>/dev/null
then
    # Annotated tag
    COMMIT=$(git rev-parse $TAG^{commit})
    TAGGER=($(git cat-file tag $TAG | grep '^tagger'))
    N=${#TAGGER} # Number of fields
    DATE=${TAGGER[@]:$N-2:2} # Last two fields
    AUTHOR=${TAGGER[@]:1:$N-3} # Everything but the first and last two
    MESSAGE=$(git cat-file tag $TAG | tail -n+6)
elif git rev-parse refs/tags/$TAG -- &>/dev/null
then
    # Lightweight tag - just a commit, basically
    COMMIT=$(git rev-parse $TAG^{commit})
else
    echo "$TAG: not a tag" >&2
fi
用户回答回答于

git show $TAG将显示标记的信息以及它所指向的提交。

如果有一些已经对你有用但很难键入的东西,则可以始终设置别名:

[alias]
        showtag = !sh -c 'git rev-parse $1 | xargs git cat-file -p' -

并以:

$ git showtag my-tag-name

扫码关注云+社区