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


当前回答

使用git分支--包含HEAD|tail-1|xargs,它也适用于“分离的HEAD”状态。

其他回答

很简单,我用一行(bash)就搞定了

git branch | sed -n '/\* /s///p'

(信贷:有限补偿)

当我在那里的时候,唯一的一条线路就是远程跟踪分支(如果有的话)

git rev-parse --symbolic-full-name --abbrev-ref @{u}

这个呢?

{ git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null } | sed "s#refs/heads/##"

我会尝试以下方法之一:

1.>git符号ref--短HEAD

git symbolic-ref --short HEAD
>>> sid-dev

2.>git分支--显示当前

git branch --show-current
>>> sid-dev

3.>git name rev–仅名称HEAD

git name-rev –name-only HEAD
>>> HEAD sid-dev

笔记:

1.>git symbol ref--short HEAD显示当前分支HEAD的简短符号引用。这是当前分支名称。

2.>gitbranch--showcurrent也是打印当前分支名称的一种简单有效的方法。

3.>git name rev–name only HEAD为当前分支的HEAD版本提供符号名称

4.>在上面的示例中,sid-dev是我的分支的名称。

您还可以在当前项目的.git目录中看到当前分支的名称。

在终端中键入命令:open.git/HEAD输出文件包含当前分支的名称ref:refs/heads/{current_working_branch}

为什么不使用git-aware shell提示符,它会告诉您当前分支的名称?git状态也有帮助。


如何从contrib/执行git-prompt.sh(git版本2.3.0),如__git_ps1 helper函数中所定义:

首先,如果检测到正在进行的重基,则存在特殊情况。Git在rebase过程中使用未命名的分支(分离的HEAD)使其成为原子分支,原始分支保存在其他地方。如果.git/HEAD文件是一个符号链接(从git的古代历史来看,这种情况非常罕见),那么它将使用git符号ref HEAD 2>/dev/null否则,它将读取.git/HEAD文件。下一步取决于其内容:如果此文件不存在,则当前没有分支。如果存储库是空的,通常会发生这种情况。如果它以“ref:”前缀开头,那么.git/HEAD是symref(符号引用),并且我们处于正常分支。去掉前缀以获得全名,去掉refs/heads/以获得当前分支的短名称:b=“${head#ref:}”# ...b=${b#refs/heads/}如果它不是以“ref:”开头,那么它是分离的HEAD(匿名分支),直接指向某个提交。使用git描述。。。以人类可读的形式编写当前提交。

我希望这有帮助。