只显示Git中的当前分支

是否有一个Git命令等价于:

git branch | awk '/\*/ { print $2; }'
193271 次浏览

我使用

/etc/bash_completion.d/git

它随Git一起提供,并提供了带有分支名称和参数补全的提示。

的输出可能会让您感兴趣

git symbolic-ref HEAD

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

basename $(git symbolic-ref HEAD)

git symbolic-ref HEAD | cut -d/ -f3-

还有.git/HEAD文件,你可能也会感兴趣。

$ git rev-parse --abbrev-ref HEAD
master

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

据我所知,没有办法在Git中本地显示当前的分支,所以我一直在使用:

git branch | grep '*'

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

$ git symbolic-ref HEAD
refs/heads/develop
$ git symbolic-ref --short HEAD
develop

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

git branch --contains HEAD
* master

这不是更短,但它也处理分离的分支:

git branch | awk -v FS=' ' '/\*/{print $NF}' | sed 's|[()]||g'

为了完整起见,echo $(__git_ps1)(至少在Linux上)应该用圆括号括起当前分支的名称。

这可能是有用的在某些情况下,因为它不是一个Git命令(但取决于Git), 特别是设置Bash命令提示符来显示当前分支

例如:

/mnt/c/git/ConsoleApp1 (test-branch)> echo $(__git_ps1)
(test-branch)
/mnt/c/git/ConsoleApp1 (test-branch)> git checkout master
Switched to branch 'master'
/mnt/c/git/ConsoleApp1 (master)> echo $(__git_ps1)
(master)
/mnt/c/git/ConsoleApp1 (master)> cd ..
/mnt/c/git> echo $(__git_ps1)


/mnt/c/git>

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

参见提交0 ecb1fc (25 Oct 2018) by daniel Umanovskis (umanovskis)
(由Junio C Hamano—gitster in 提交3710法郎合并,07 Mar 2019)

branch:引入--show-current显示选项

当使用--show-current调用时,git branch将打印当前 分支名称和终止。
只打印实际名称,而不打印refs/heads
在分离的HEAD状态下,什么也不输出

用于脚本和交互式/信息使用。
git branch --list不同,不需要过滤就可以获得 分支的名字。< / p >

参见关于2018年10月Git邮件列表实际的补丁. c的原始讨论。


警告:如前所述在评论中 by 奥利维尔:

这并不是在任何情况下都有效!
例如,当你在子模块中,它就不起作用。
'git symbolic-ref --short HEAD'总是有效的

有人可能会发现这个(git show-branch --current)很有用。当前分支显示为*标记。

host-78-65-229-191:idp-mobileid user-1$ git show-branch --current
! [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
* [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
--
+  [CICD-1283-pipeline-in-shared-libraries] feat(CICD-1283): Use latest version of custom release plugin.
+  [CICD-1283-pipeline-in-shared-libraries^] feat(CICD-1283): Used the renamed AWS pipeline.
+  [CICD-1283-pipeline-in-shared-libraries~2] feat(CICD-1283): Point to feature branches of shared libraries.
-- [master] Merge pull request #12 in CORES/idp-mobileid from feature/fix-schema-name to master
对于那些喜欢别名的人: 将以下内容放到你的.zshrc中,这样你就可以更容易地获得git命令流

别名gpsu="git push -set-upstream origin $(git symbol -ref -short HEAD)"