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


当前回答

我知道这已经得到了回答,但在最新版本的Git中,命令gitbranch会以某种提示打开分支列表,您必须退出。这让我烦死了!

这是我的解决方案:打开bash配置文件并键入:

#!/bin/bash
git() {
  if [[ $@ == "branch" ]] then
    command git branch -a | grep -v 'remotes'
  else
    command git "$@"
  fi
}

现在打开终端,在git repo中键入以下命令进行测试:

source ~/.zshrc
git branch 

瞧!您的本地分支机构列表将在您的终端中打印出来。

编写到bashrc文件的代码将覆盖gitbranch的默认函数,并用一个更长的命令替换它,该命令通过-a参数列出所有本地分支。然后我们把多余的不需要的业务打印出来。如果排除grep命令,仍然会得到令人讨厌的提示。如果您不熟悉编写bash命令,请检查以下解释:关于.bash_profile、.bashrc,以及别名应该写在哪里?

其他回答

为了我自己的参考(但可能对其他人有用),我概述了本线程中提到的大多数(基本命令行)技术,每个技术都应用于几个用例:HEAD是(指向):

本地分支(主分支)远程跟踪分支,与本地分支同步(源/主与主提交相同)远程跟踪分支,与本地分支不同步(原点/功能foo)标签(v1.2.3)子模块(在子模块目录中运行)一般分离头(以上均不适用)

结果:

git分支|sed-n'/\*/s///p'本地分支:主远程跟踪分支(同步):(与源/主分离)远程跟踪分支(不同步):(与原始/功能foo分离)标签:(与v1.2.3分离)子模块:(头部在285f294处分离)通用分离头:(与285f294分离)git状态|头-1本地分支:#在分支主机上远程跟踪分支(同步):#HEAD在源站/主站分离远程跟踪分支(不同步):#HEAD在origin/feature foo分离tag:#HEAD在v1.2.3中分离子模块:#HEAD在285f294处分离一般分离封头:#在285f294处分离封头git-descripte--全部本地分支:主管/主管远程跟踪分支(同步):头/主(注意:不是远程/原点/主)远程跟踪分支(不同步):remotes/origin/feature foo标签:v1.2.3子模块:remotes/origin/HEAD通用分离头:v1.0.6-5-g2393761cat.git/HEAD:本地分支:ref:refs/heads/master子模块:cat:.git/HEAD:不是目录所有其他用例:相应提交的SHAgit-rev-parse--缩写ref HEAD本地分支:主所有其他用例:HEADgit符号ref—短HEAD本地分支:主所有其他用例:fatal:ref HEAD不是符号ref

(仅供参考,这是使用git 1.8.3.1版完成的)

我会尝试以下方法之一:

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的当前分支,但我更喜欢:

git branch --show

甚至gitbranch也会显示当前分支名称以及所有现有分支名称列表。

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

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

这将列出所有本地分支机构,当前分支机构以绿色标记并打印