如何获取工作副本的当前分支或标签名称?我已经看到表明rev-parse --abbrev-ref HEAD
将给出分支名称的引用,但是如果结帐是标签,这将不起作用,在这种情况下它只会返回“HEAD”。我需要以某种方式获取这些修订的标签名称。
为了清楚起见,我想要两个可能的名称之一:
- 如果当前结帐是分支的 HEAD,我想要分支名称
- 如果是分离的 HEAD,我想要标签名称(假设有标签)
如何获取工作副本的当前分支或标签名称?我已经看到表明rev-parse --abbrev-ref HEAD
将给出分支名称的引用,但是如果结帐是标签,这将不起作用,在这种情况下它只会返回“HEAD”。我需要以某种方式获取这些修订的标签名称。
为了清楚起见,我想要两个可能的名称之一:
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.
此命令可以按此优先级打印名称:tag
>>branch
commit
git describe --tags --exact-match 2> /dev/null \
|| git symbolic-ref -q --short HEAD \
|| git rev-parse --short HEAD
此命令可以按此优先级打印名称:branch
>>tag
commit id
git symbolic-ref --short -q HEAD \
|| git describe --tags --exact-match 2> /dev/null \
|| git rev-parse --short HEAD
合并@xiaohui-zhang 的回答和@thisismydesign 的评论。我每隔几个月就会不断地回到这个问题,这就是我最终得到的答案,所以我想我会发布它。