获取git当前分支/标记名称

edA*_*a-y 22 git branch git-checkout git-branch

如何获取工作副本的当前分支或标记名称?我已经看到指示rev-parse --abbrev-ref HEAD将给出分支名称的引用,但是如果checkout是标记,则这不起作用,在这种情况下它只返回'HEAD'.我需要以某种方式获取这些修订的标记名称.

要清楚,我想要两个可能的名字之一:

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

Joh*_*ter 56

我想你想要这个:

git symbolic-ref -q --short HEAD || git describe --tags --exact-match
Run Code Online (Sandbox Code Playgroud)

这将输出HEAD的值,如果它没有分离,或者发出标记名称,如果它是完全匹配的话.否则它会显示错误.


use*_*557 9

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

git symbolic-ref --short -q HEAD \
  || git describe --tags --exact-match 2> /dev/null \
  || git rev-parse --short HEAD
Run Code Online (Sandbox Code Playgroud)

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


Xia*_*ang 7

这个命令可以在这一优先打印名称:tag> branch>commit

git describe --tags --exact-match 2> /dev/null \
  || git symbolic-ref -q --short HEAD \
  || git rev-parse --short HEAD
Run Code Online (Sandbox Code Playgroud)