如何获取Git中当前分支的名称?


当前回答

在分离头上返回分支名称或SHA1:

git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD

这是@dmaestro12答案的简短版本,没有标记支持。

其他回答

如果您确实希望最后一个分支/标记也在分离的HEAD状态下检出。

git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev

使现代化如果你有而且不害怕awk,这会更好。

git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}'

您可以使用一条grep指令来完成此操作,使用Perl模式和\K来重置匹配缓冲区,因此您只能获得分支名称。

$ git branch | grep -oP "^\*\s+\K\S+$"
master

很抱歉,这是另一个命令行答案,但当我发现这个问题时,我正在寻找这个答案,其中许多答案都很有用。我的解决方案是以下bashshell函数:

get_branch () {
    git rev-parse --abbrev-ref HEAD | grep -v HEAD || \
    git describe --exact-match HEAD 2> /dev/null || \
    git rev-parse HEAD
}

这应该总是给我一些既可读又可直接用作git checkout参数的东西。

在本地分支上:feature/HS-0001在标记的提交(分离)上:v3.29.5在远程分支上(已分离,未标记):SHA1在任何其他分离的提交上:SHA1

git branch

应显示回购协议的所有本地分支机构。星形分支是您当前的分支。


要仅检索您所在分支的名称,请执行以下操作:

git rev-parse --abbrev-ref HEAD

或Git 2.22及以上版本:

git branch --show-current

如果在Jenkins中运行,可以使用GIT_BRANCH变量,如下所示:https://wiki.jenkins-ci.org/display/JENKINS/Git+插件

git插件设置了几个可以在脚本中使用的环境变量:

GIT_COMMIT-当前的SHAGIT_BRANCH—当前使用的分支的名称,例如“master”或“origin/foo”GIT_PREVIOUS_COMMIT-来自同一个的上一个生成提交的SHA分支(第一个内置分支上的当前SHA)GIT_URL-存储库远程URLGIT_URL_N-存储库远程URL(当超过1个时)遥控器,例如GIT_URL_1、GIT_URL_2GIT_AUTHOR_EMAIL-提交人/作者电子邮件GIT_COMMITTER_EMAIL-提交人/作者电子邮件