脚本git,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用git branch | sed -n '/^\* /s///p'
。 (因为.gitconfig中的color.branch
或column.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
更好的东西来找出签出的分支?
答案 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/
前缀应该非常简单......