脚本git,我需要找出签出的分支名称.到目前为止,似乎唯一"可靠"的方法就是这样做git branch | sed -n '/^\* /s///p'.(由于类似color.branch或column.branch在.gitconfig中的内容而引用引号;它根本不可靠.)我发现的唯一另一件事是git name-rev,但这似乎返回指向HEAD的第一个(按名称排序)分支:
> git checkout master
> git checkout -b another
> git checkout master
> git name-rev HEAD
HEAD another
Run Code Online (Sandbox Code Playgroud)
有没有什么比sed -n '\#^ref: refs/heads/#s###p' .git/HEAD找出检出的分支更好?
只需输出您所在的分支:
git rev-parse --symbolic-full-name --abbrev-ref HEAD
Run Code Online (Sandbox Code Playgroud)
如果你有多个分支,也应该没有问题,如果你不在任何分支上它只是给你 HEAD
这是git我在几个脚本中使用的一个小调用,要么返回refs/heads/branchname,要么如果你不在分支上,它会给你分离的HEAD的SHA:
cur_branch=$(git symbolic-ref HEAD 2>> /dev/null || git rev-parse HEAD)
Run Code Online (Sandbox Code Playgroud)
删除refs/heads/前缀应该非常简单,如果你需要它...