30

如何获取工作副本的当前分支或标签名称?我已经看到表明rev-parse --abbrev-ref HEAD将给出分支名称的引用,但是如果结帐是标签,这将不起作用,在这种情况下它只会返回“HEAD”。我需要以某种方式获取这些修订的标签名称。

为了清楚起见,我想要两个可能的名称之一:

  1. 如果当前结帐是分支的 HEAD,我想要分支名称
  2. 如果是分离的 HEAD,我想要标签名称(假设有标签)
4

3 回答 3

72

I think you want this:

git symbolic-ref -q --short HEAD || git describe --tags --exact-match

That will output the value of HEAD, if it's not detached, or emit the tag name, if it's an exact match. It'll show you an error otherwise.

于 2013-09-06T14:28:14.770 回答
22

此命令可以按此优先级打印名称:tag>>branchcommit

git describe --tags --exact-match 2> /dev/null \
  || git symbolic-ref -q --short HEAD \
  || git rev-parse --short HEAD
于 2019-03-21T08:21:10.043 回答
3

此命令可以按此优先级打印名称:branch>>tagcommit id

git symbolic-ref --short -q HEAD \
  || git describe --tags --exact-match 2> /dev/null \
  || git rev-parse --short HEAD

合并@xiaohui-zhang 的回答和@thisismydesign 的评论。我每隔几个月就会不断地回到这个问题,这就是我最终得到的答案,所以我想我会发布它。

于 2020-11-18T03:28:17.327 回答