仅显示 Git 中的当前分支

问题描述 投票:0回答:12

是否存在相当于以下内容的 Git 命令:

git branch | awk '/\*/ { print $2; }'
git branch git-branch
12个回答
824
投票
$ git rev-parse --abbrev-ref HEAD
master

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


205
投票

使用 Git 2.22(2019 年第 2 季度),您将拥有更简单的方法:

git branch --show-current

请参阅 Daniels Umanovskis (umanovskis)

commit 0ecb1fc(2018 年 10 月 25 日)。
(由 Junio C Hamano --
gitster
--
合并于 commit 3710f60,2019 年 3 月 7 日)

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

当使用

--show-current
调用时,
git branch
将打印当前 分支名称并终止。
仅打印实际姓名,没有
refs/heads

在分离的 HEAD 状态下,没有任何输出。

适用于脚本编写和交互式/信息用途。

git branch --list
不同,无需过滤即可获取 分行名称。

请参阅 2018 年 10 月Git 邮件列表上的原始讨论,以及 实际补丁


警告:如

Olivier的评论中所述:

这并不适用于所有情况!
例如,当您位于

子模块
中时,它不起作用。git symbolic-ref --short HEAD
”总是有效。


    


165
投票
git symbolic-ref

命令: $ git symbolic-ref HEAD refs/heads/develop $ git symbolic-ref --short HEAD develop



30
投票
的输出感兴趣

git symbolic-ref HEAD

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

basename $(git symbolic-ref HEAD)

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

然后还有 
.git/HEAD

文件,您可能也会感兴趣。

    


18
投票

git branch | grep '*'



7
投票

git branch --contains HEAD * master



3
投票

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



3
投票

/etc/bash_completion.d/git

它随 Git 一起提供,并提供包含分支名称和参数完成的提示。


2
投票

alias gpsu="git push --set-upstream origin $(git symbolic-ref --short HEAD)"


1
投票

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



0
投票
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>



0
投票

git name-rev HEAD

得到

HEAD remotes/origin/branch

© www.soinside.com 2019 - 2024. All rights reserved.