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


当前回答

下面的shell命令告诉您当前所在的分支。

git branch | grep ^\*

如果您不想在每次想知道分支并使用Bash时键入长命令,请为该命令提供一个短别名,例如别名cb,如下所示。

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

当您在branch master中并且提示为$时,您将获得*master,如下所示。

$ cb
* master

其他回答

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

将仅显示分支名称

您可以永久设置bash输出以显示git分支名称。当您使用不同的分支时,它非常方便,无需一直键入$git状态。Github repo git-aware提示.

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

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

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

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\]\$ "

在前面粘贴安装代码的同一文件的末尾。这将为您提供彩色输出:

很抱歉,这是另一个命令行答案,但当我发现这个问题时,我正在寻找这个答案,其中许多答案都很有用。我的解决方案是以下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

您还有显示完整refspec的git符号ref HEAD。

要在Git v1.8及更高版本中仅显示分支名称(感谢Greg指出这一点):

git symbolic-ref --short HEAD

在Git v1.7+上,您还可以执行以下操作:

git rev-parse --abbrev-ref HEAD

如果您在一个分支上,这两个分支都应该给出相同的分支名称。如果你头脑冷静,答案就不同了。

注:在早期的客户端上,这似乎有效:git符号ref HEAD|sed-e“s/^refs\/heads\///”–Darien 26。2014年3月

使用Mac将其添加到PS1:

PS1='\W@\u >`[ -d .git ] && git branch | grep  ^*|cut -d" " -f2`> $ '

在运行上述命令之前:

运行该命令后:

不要担心,如果它不是GIT存储库,它不会显示错误,因为[-d.GIT]会检查.GIT文件夹是否存在。