git将告诉签出的分支

git将告诉签出的分支,git,Git,编写git脚本时,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用git分支| sed-n'/^\*/s///p'。(因为.gitconfig中的color.branch或column.branch之类的东西而害怕引用;它根本不可靠。)我找到的唯一其他东西是git name rev,但它似乎返回指向头部的第一个(按名称排序)分支: > git checkout master > git checkout -b another > git checkout ma

编写git脚本时,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用
git分支| sed-n'/^\*/s///p'
。(因为.gitconfig中的
color.branch
column.branch
之类的东西而害怕引用;它根本不可靠。)我找到的唯一其他东西是
git name rev
,但它似乎返回指向头部的第一个(按名称排序)分支:

> git checkout master
> git checkout -b another
> git checkout master
> git name-rev HEAD
HEAD another

是否有比
sed-n'\\\\\^ref:refs/heads/#s\35;###p.git/HEAD
更好的方法来计算签出的分支?

只需输出您正在使用的分支:

git rev-parse --symbolic-full-name --abbrev-ref HEAD

如果您有多个分支,并且如果您不在任何分支上,它只会给您
HEAD

这里有一个我在几个脚本中使用的
git
调用,它会返回
refs/heads/branchname
,或者如果您不在分支上,它给了你超脱的头上的SHA:

cur_branch=$(git symbolic-ref HEAD 2>> /dev/null || git rev-parse HEAD)

删除
refs/heads/
前缀应该非常简单,如果您需要它…

似乎类似于
--short
处理前缀,并且
-q
抑制stderr上的输出。
git symbolic ref-q--short HEAD
对于懒惰的人:)这两个和twalberg的答案对于前面提到的问题都是正确的,我对它们都投了赞成票。如果有可能接受多个答案,我会在这种情况下这样做
git symbolic ref
won,因为我更喜欢分离头部的非零退出代码。未说明的要求,我知道。