4

脚本git,我需要找出签出的分支名称。到目前为止,似乎唯一“可靠”的方法是使用git branch | sed -n '/^\* /s///p'. (由于 .gitconfig 之类的东西color.branchcolumn.branch在 .gitconfig 中的引号;它根本不可靠。)我发现的唯一另一件事是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找出已签出的分支更好的方法吗?

4

2 回答 2

9

只需输出您所在的分支:

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

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

于 2013-05-31T13:29:31.690 回答
6

git这是我在几个脚本中使用的一个小调用,它可以返回refs/heads/branchname,或者如果您不在分支上,它会给出您分离的 HEAD 的 SHA:

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

删除refs/heads/前缀应该很简单,如果你需要它......

于 2013-05-31T14:07:16.190 回答