git plumbing告诉签出的分支

时间:2013-05-31 13:26:49

标签: git

脚本git,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用git branch | sed -n '/^\* /s///p'。 (因为.gitconfig中的color.branchcolumn.branch之类的内容引用了引号;它根本不可靠。)我发现的唯一另一件事是git name-rev,但这似乎返回第一个(按名称排序)指向HEAD的分支:

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

是否有比sed -n '\#^ref: refs/heads/#s###p' .git/HEAD更好的东西来找出签出的分支?

2 个答案:

答案 0 :(得分:7)

输出您所在的分支:

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

如果您有多个分支,也应该没有问题,如果您不在任何分支上,它只会给您HEAD

答案 1 :(得分:6)

这是我在几个脚本中使用的一点git调用,要么返回refs/heads/branchname,要么如果你不在一个分支上,它会给你分离的HEAD的SHA :

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

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