git - Git如何获取当前分支的名字?

时间:

git branch"应该显示repo的所有本地分支,


git rev-parse --abbrev-ref HEAD

将显示当前分支

若要只显示Git v1.8中的分支名称以及更高版本的:


$ git symbolic-ref --short HEAD

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


$ git rev-parse --abbrev-ref HEAD

如果你在分支上,都应该给出相同的分支名,

备注:

在早期的客户端上,这似乎是有效的:


$ git symbolic-ref HEAD | sed -e"s/^refs/heads///"

  • 本地分支(主节点)
  • 本地分支同步的远程跟踪分支(与主节点相同的源/主机)
  • 本地分支(原始/特性foo )不同步的远程跟踪分支
  • 标记(v1.2.3 )
  • 常规分离头

结果:

  • git branch | sed -n '/* /s///p'
    • 本地分支:master
    • 远程跟踪分支(同步): (detached from origin/master)
    • 远程跟踪分支(不同步): (detached from origin/feature-foo)
    • 标签:(detached from v1.2.3)
    • 通用分离头:(detached from 285f294)
  • git status | head -1
    • 本地分支: # On branch master
    • 远程跟踪分支(同步): # HEAD detached at origin/master
    • 远程跟踪分支(不同步): # HEAD detached at origin/feature-foo
    • 标签: # HEAD detached at v1.2.3
    • 常规分离头: # HEAD detached at 285f294
  • git describe --all
    • 本地分支:heads/master
    • 远程跟踪分支(同步): heads/master (注意:不是remotes/origin/master )
    • 远程跟踪分支(不同步): remotes/origin/feature-foo
    • 标签:v1.2.3
    • 通用分离头:v1.0.6-5-g2393761
  • cat .git/HEAD
    • 本地分支:ref: refs/heads/master
    • 所有其他用例:对应提交的SHA
  • git rev-parse --abbrev-ref HEAD
    • 本地分支:master
    • 所有其他用例: HEAD
  • git symbolic-ref --short HEAD
    • 本地分支:master
    • 所有其他用例: fatal: ref HEAD is not a symbolic ref

(这是用git版本1.8.3.1完成的)


git branch | sed -n '/* /s///p'

用来获得远程跟踪分支(如果有的话),


git rev-parse --symbolic-full-name --abbrev-ref @{u}

你可以在Linux中的存储库目录中键入命令行(控制台):

 
$ git status

 

你将看到一些文本,其中有些内容类似于:


...
On branch master
...

这意味着你现在位于master分支。


git branch | awk '/^*/{print $2}'


git symbolic-ref -q --short HEAD

它将显示当前的短符号引用头部,这是当前的分支名称。


#!/bin/bash
function git.branch {
 br=`git branch | grep"*"`
 echo ${br/* /}
}
git.branch


{ git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null } | sed"s#refs/heads/##"

...