只显示Git中的当前分支

Oll*_*ers 326 git branch git-branch

我尝试为此寻找一个特殊的git命令,但找不到一个.任何人都可以提出更短或更快的建议:

git branch | awk '/\*/ { print $2; }'
Run Code Online (Sandbox Code Playgroud)

ear*_*arl 601

$ git rev-parse --abbrev-ref HEAD
master
Run Code Online (Sandbox Code Playgroud)

这应该适用于Git 1.6.3或更新版本.

  • `gitbranch --show-current` 是 Git 2.22 以来最新的方式吗? (10认同)
  • 据我所知,从Git日志来看,这个功能在2009-04-20合并,并在1.6.3版本发布. (7认同)
  • 请注意,如果您处于分离的符号引用中(可能意味着您位于分支中,但签出了先前的提交),则此命令将仅返回“ HEAD”,而不是预期的“ master”。 (4认同)
  • 使用 git-1.6.2.5 对我也不起作用。git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08(即rev-parse不接受--abbrev-ref(也不在手册页中)) (2认同)

die*_*sys 122

在Git 1.8.1中,您可以使用带有"--short"选项的git symbolic-ref命令:

$ git symbolic-ref HEAD
refs/heads/develop
$ git symbolic-ref --short HEAD
develop
Run Code Online (Sandbox Code Playgroud)

  • 比接受的答案IMO更好,因为它适用于没有提交的回购 (7认同)
  • 对于那些出现“符号引用”错误的人:这可能是因为从技术上讲您没有签出分支,并且处于“分离”状态:/sf/ask/716013231/独立头。因此,如果您需要命令在分离头状态下成功退出,请在另一个答案中使用“rev-parse”命令 (4认同)
  • 在TravisCI构建的一部分中运行此错误时,遇到致命错误:ref HEAD不是符号ref。 (2认同)

Von*_*onC 30

使用Git 2.22(Q2 2019),你将有一个更简单的方法:git branch --show-current

参见Daniels Umanovskis(提交的commit 0ecb1fc(25 Oct 2018 (由Junio C Hamano合并--commit 3710f60中,2019年3月7日)umanovskis
gitster

branch:介绍--show-current显示选项

用调用时--show-currentgit branch将打印当前分支名称并终止。
仅打印实际名称,不打印refs/heads
在分离的HEAD状态下,不输出任何内容。

旨在用于脚本和交互式/信息性用途。
与不同git branch --list,不需要过滤就可以获取分支名称。

  • 最后,添加了从一开始就应该存在的地方! (11认同)

Mic*_*ker 25

您可能对输出感兴趣

git symbolic-ref HEAD
Run Code Online (Sandbox Code Playgroud)

特别是,根据您的需求和布局,您可能希望这样做

basename $(git symbolic-ref HEAD)
Run Code Online (Sandbox Code Playgroud)

要么

git symbolic-ref HEAD | cut -d/ -f3-
Run Code Online (Sandbox Code Playgroud)

然后再次.git/HEAD提供您可能感兴趣的文件.

  • 也可以做`git symbolic-ref --short HEAD` (5认同)
  • 你可以将`git rev-parse --symbolic-full-name`缩短为`git symbolic-ref`. (2认同)
  • 你不需要使用 `basename` 或 `cut`;使用 `BR=${BR#refs/heads/}`(其中 BR 是你保存的 `git symbols-ref HEAD` 输出的变量名)。 (2认同)
  • 如果您的分支名称中包含斜杠("task/foo","feature/bar"),则会中断.当同事认为斜线很酷时,一堆我的构建文件开始失败... (2认同)

the*_*uss 12

这是我刚刚偶然发现的一个老话题.据我所知,没有办法在GIT中本地显示当前分支,所以我一直在使用:

git branch | grep '*'
Run Code Online (Sandbox Code Playgroud)

  • 虽然这适用于GNU coreutils,但`grep'*'`名义上是语法错误.你可能想要`git branch | 无论如何,sed -n's/^\*// p'` 或者实际上,OP首先发布了什么,这相当于同样的事情. (3认同)
  • 只能用`git branch | 剪切分支名称| grep "*" | 剪切 -d' ' -f2` (3认同)
  • @johndodo感谢您的澄清,现在对我来说很有意义。我通常通过`grep'\ *'` (2认同)

小智 7

我想这应该很快,可以与python API一起使用.

git branch --contains HEAD
* master
Run Code Online (Sandbox Code Playgroud)

  • 这不会输出当前分支。它输出恰好指向提交 HEAD 指向的分支列表。是的,它可以重叠,但这可能会导致误解。从您所在的位置创建一个新分支并重试您的线路:两个分支。问题要求“*仅当前分支*”。 (5认同)