如何获取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,以及别名应该写在哪里?

其他回答

找到了一个与Oliver Refalo相同长度的命令行解决方案,使用了良好的ol‘awk:

git branch | awk '/^\*/{print $2}'

awk将其理解为“在与正则表达式匹配的行上执行{}中的内容”。默认情况下,它采用空格分隔的字段,因此您可以打印第二个。如果假设只有分支所在的行具有*,则可以删除^。啊,打高尔夫!

您只需在Linux上的存储库目录中键入命令行(控制台):

$ git status

您将看到一些文本,其中类似于:

...
On branch master
...

这意味着您当前处于主分支。如果此时您正在编辑任何文件,并且该文件位于同一本地存储库(包含受Git版本控制管理的文件的本地目录)中,则您正在编辑该分支中的文件。

使用早期的想法;假设sha1为40个字符;和跟踪引用(是的,应该删除调试打印行:-):

git reflog | awk '
$3 == "checkout:" && (sha == "" || sha == $1 ) {
  from=$(NF - 2)
  to=$NF
  print from, to, length(from) > "/dev/stderr"
  if (length(from) != 40) { print from ; exit; }
  sha=substr(from, 1, 7)
  print sha > "/dev/stderr"
}
'

给出原始输出:

$ git status
HEAD detached at 147049c
[...]
$ ./gime-branch.sh
a47be8d2167641088b66bf8f5c2bf7d3da0c642c HEAD^ 40
a47be8d
master HEAD^ 6
master

在Netbeans中,确保启用了版本控制注释(查看->显示版本控制标签)。然后,您可以看到项目名称旁边的分支名称。

http://netbeans.org/bugzilla/show_bug.cgi?id=213582

git branch

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


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

git rev-parse --abbrev-ref HEAD

或Git 2.22及以上版本:

git branch --show-current