如何获取Git中当前分支的名称?


当前回答

git branch

应显示回购协议的所有本地分支机构。星形分支是您当前的分支。


要仅检索您所在分支的名称,请执行以下操作:

git rev-parse --abbrev-ref HEAD

或Git 2.22及以上版本:

git branch --show-current

其他回答

您可以使用一条grep指令来完成此操作,使用Perl模式和\K来重置匹配缓冲区,因此您只能获得分支名称。

$ git branch | grep -oP "^\*\s+\K\S+$"
master

要仅显示当前分支的名称,请执行以下操作:

git rev-parse --abbrev-ref HEAD

参考:仅显示Git中的当前分支

您还有显示完整refspec的git符号ref HEAD。

要在Git v1.8及更高版本中仅显示分支名称(感谢Greg指出这一点):

git symbolic-ref --short HEAD

在Git v1.7+上,您还可以执行以下操作:

git rev-parse --abbrev-ref HEAD

如果您在一个分支上,这两个分支都应该给出相同的分支名称。如果你头脑冷静,答案就不同了。

注:在早期的客户端上,这似乎有效:git符号ref HEAD|sed-e“s/^refs\/heads\///”–Darien 26。2014年3月

在Netbeans中,确保启用了版本控制注释(查看->显示版本控制标签)。然后,您可以看到项目名称旁边的分支名称。

http://netbeans.org/bugzilla/show_bug.cgi?id=213582

使用早期的想法;假设sha1为40个字符;和跟踪引用(是的,应该删除调试打印行:-):

git reflog | awk '
$3 == "checkout:" && (sha == "" || sha == $1 ) {
  from=$(NF - 2)
  to=$NF
  print from, to, length(from) > "/dev/stderr"
  if (length(from) != 40) { print from ; exit; }
  sha=substr(from, 1, 7)
  print sha > "/dev/stderr"
}
'

给出原始输出:

$ git status
HEAD detached at 147049c
[...]
$ ./gime-branch.sh
a47be8d2167641088b66bf8f5c2bf7d3da0c642c HEAD^ 40
a47be8d
master HEAD^ 6
master