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

3971

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


15
让你的集成开发环境(IDE)显示文件.git/HEAD,可能位于父目录中。 - Tino
124
显示Git中当前分支的命令是:$ git rev-parse --abbrev-ref HEAD - Fantastory
3
可能是重复的问题:如何以编程方式确定当前检出的Git分支 - tripleee
2
启用NetBeans中的“视图->显示版本标签”,然后您所需要做的就是将鼠标悬停在项目(或文件,或收藏夹)文件夹上,即可查看当前分支。 - idclaar
9
可能是在Git中仅显示当前分支的重复问题。 - techraf
显示剩余6条评论
51个回答

18
#!/bin/bash
function git.branch {
  br=`git branch | grep "*"`
  echo ${br/* /}
}
git.branch

17
git status 

将同时给出更改所在的分支名称。

例如:

>git status
On branch master // <-- branch name here
.....

16

随着时间的推移,我们可能会拥有一个非常长的分支列表。

尽管其他解决方案也很好,但这是我采取的方法(简化自Jacob的答案):

git branch | grep \*
现在,
git status

只有在存在本地更改的情况下才有效


14

我建议使用以下两个命令之一。

git branch | grep -e "^*" | cut -d' ' -f 2

或者

git status | sed -n 1p | cut -d' ' -f 3

或者(更详细)

git status -uno -bs| cut -d'#' -f 3 | cut -d . -f 1| sed -e 's/^[ \t]//1'| sed -n 1p


12

这个怎么样?

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

1
更好的答案,因为它能够很好地处理分离 HEAD 的情况。 - Pat
2
似乎你应该使用 () 而不是 { } 来包装 git 命令。 - Pat
@Pat 没有必要为此生成单独的子shell,因为()就可以了。{ }也可以,除非在}之前需要添加;或换行符。实际上,除非需要对命令进行分组,否则可以完全省略{ }。 - aij
1
symbolic-ref 部分不也需要 --short 来避免在分支名称前加上 refs/heads/ 前缀吗? - rjp

12
以下的 shell 命令可以告诉你当前所在的分支。
git branch | grep ^\*

当您不想每次都键入那个冗长的命令以了解分支时,并且正在使用Bash时,请给该命令取一个简短的别名,例如alias cb

alias cb='git branch | grep ^\*'

当您在主分支(master)中且提示符为$时,您将得到以下内容:* master

$ cb
* master

这并不是对问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言。-【来自审核】 - Rashwan L
1
你怎么这么想呢? - mrrusof
你应该对你的帖子进行评论和描述,这样OP就更容易理解你的帖子。 - Rashwan L
1
非常有道理。 - mrrusof
1
如果您使用zsh,您需要将grep正则表达式用单引号括起来:git branch | grep '^\*' - aaaarrgh
另外,如果您想要不带 * 的普通分支名称(例如用于脚本),可以通过 awk 管道传递:git branch | grep ^\* | awk '{print $2}' - aaaarrgh

12

启用版本注释后,您只需将鼠标悬停在项目(或文件、收藏)文件夹上即可查看当前分支。 - idclaar

12

你可以永久地设置bash输出以显示git分支名称。当你使用不同的分支工作时,这非常方便,无需一直键入$ git status

Github repo git-aware-prompt

打开终端(ctrl-alt-t)并输入以下命令:

mkdir ~/.bash
cd ~/.bash
git clone git://github.com/jimeh/git-aware-prompt.git

使用sudo nano ~/.bashrc命令(适用于Ubuntu),编辑您的.bashrc文件并在顶部添加以下内容:

export GITAWAREPROMPT=~/.bash/git-aware-prompt
source "${GITAWAREPROMPT}/main.sh"

然后粘贴代码

export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ "

在您之前粘贴安装代码的同一文件末尾。这将为您提供着色的输出:enter image description here


11

我有一个简单的脚本叫做git-cbr当前分支),它打印出当前分支的名称。

#!/bin/bash

git branch | grep -e "^*"

我把这个脚本放在一个自定义的文件夹里(~/.bin)。该文件夹位于$PATH中。

现在当我在 git 存储库中时,我只需简单地键入 git cbr 即可打印出当前分支名称。

$ git cbr
* master

这个方法有效是因为git命令会将其第一个参数传递给名为git-arg1的脚本进行运行。例如,git branch尝试运行名为git-branch的脚本等。


10
返回分支名称或SHA1值(当处于游离状态时)。
git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD

这是@dmaestro12答案的简短版本,不包含标签支持。


8
git symbolic-ref --quiet --short HEAD || git rev-parse --short HEAD 的意思是获取当前 Git 仓库的当前分支名称(如果有)或者当前提交的哈希值(如果不在分支上)。 - blueyed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接