仅显示Git中的当前分支
我试图为此寻找一个特殊的Git命令,但找不到。有没有比下面短或快的仅显示Git中的当前分支,git,branch,git-branch,Git,Branch,Git Branch,我试图为此寻找一个特殊的Git命令,但找不到。有没有比下面短或快的 git branch | awk '/\*/ { print $2; }' 我正在使用 /etc/bash_completion.d/git 它与Git一起提供,并提供带有分支名称和参数完成的提示。您可能对 git symbolic-ref HEAD 特别是,根据您的需要和布局,您可能希望这样做 basename $(git symbolic-ref HEAD) 或 还有一个文件.git/HEAD,您可能也对它感兴趣 $
git branch | awk '/\*/ { print $2; }'
我正在使用
/etc/bash_completion.d/git
它与Git一起提供,并提供带有分支名称和参数完成的提示。您可能对
git symbolic-ref HEAD
特别是,根据您的需要和布局,您可能希望这样做
basename $(git symbolic-ref HEAD)
或
还有一个文件.git/HEAD
,您可能也对它感兴趣
$ git rev-parse --abbrev-ref HEAD
master
这应该适用于Git 1.6.3或更高版本。据我所知,无法在Git中以本机方式仅显示当前分支,因此我一直在使用:
git branch | grep '*'
在Git 1.8.1中,可以使用Git symbol ref命令和“-short”选项:
我想这应该很快,可以与Python API一起使用:
git branch --contains HEAD
* master
这并不短,但它也处理分离的分支:
git branch | awk -v FS=' ' '/\*/{print $NF}' | sed 's|[()]||g'
为了完整起见,
echo$(\uuu git\u 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>
使用Git2.22(2019年第2季度),您将有一个更简单的方法:Git分支——显示当前的
参见。的(2018年10月25日) (于2019年3月7日合并)
分支机构
:介绍--显示当前
显示选项
使用--show current
调用时,git branch
将打印当前
分支机构名称和终止。只打印实际名称,不打印
refs/heads
在分离头部状态下,无任何输出 用于编写脚本和交互/信息用途。
与git branch--list不同,只需获取 分行名称 请参阅上的原始讨论,以及
警告:如所述: 这并不适用于所有情况
例如,当您在子模块中时,它不起作用。
“
git symbolic ref——短头
”始终有效
有些人可能会觉得这个(--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--设置上游原点$(git symbolic ref--短头)”
我认为这是获得@ChandrayAgk的当前分支的最快可能的方法。可能的副本是@ChandrayAgk:不,因为另一个问题是关于从IDE中执行它。(许多答案是针对命令行使用的,因此值得一看,但它不是一个正确的副本,如果有任何答案可以为已经存在的内容增加重要价值,那么这些答案可能应该迁移到这里。)@Torek——Git让另一个简单的任务变得困难。对@Chandrayagk发布的链接的顶部答案远比这个慢!您可以将
git rev parse--symbolic full name
缩短为git symbolic ref
。您不需要使用basename
或cut
;使用BR=${BR#refs/heads/}
(其中BR是保存了git symbolic ref HEAD
输出的变量的名称)。如果在变量中有输出,当然不会使用Jakub。可以做git symbolic ref——如果分支名称中有斜杠(“task/foo”、“feature/bar”),则会断开。当同事们认为斜杠很酷时,我的一堆构建脚本开始失败……对于我来说,git-1.6.2.5也不管用。git rev parse--abbrev ref HEAD=>--abbrev ref 31172491A9A667F9321BDF1C4FE5E22CC6E2C08(即rev parse不接受--abbrev ref(也不在手册页中))JasonWoof,在1.6.4.2中为我工作,需要更改日志以查看它确切发生的时间;-)据我从Git日志中所知,该功能于2009-04-20年合并,并与1.6.3版一起发布。我也很想了解这一点。这实际上是如何工作的?而且,它看起来像--abbrev ref不会为任何其他参数返回任何内容。它不可能只将HEAD作为参数。请注意,如果您处于分离的符号引用中(可能意味着您处于分支中,但签出了上一次提交),此命令将只返回HEAD
,而不应返回master
如何激活此提示?在ubuntu中,$source/etc//bash_completion.d/git prompt
文件在不同系统上的命名可能不同。(注意:source
关键字与bash中的
(dot)相同。)虽然这适用于GNU coreutils,grep'*'
名义上是一个语法错误。无论如何,您可能想要git分支| sed-n的//^\*//p'
。或者,实际上,OP首先发布的内容是相同的。@tripleee你能告诉我为什么grep'*'
名义上是一个语法错误吗?@JKABC:@tripleee的意思是'*'
是一个正则表达式,因此它是无效的。您可能想使用'[*]'
(即,字符*
而不是运算符“零次或多次”)。@johndoo谢谢您的澄清,现在对我有意义了。我通常是通过grep'\*'
来完成的,我只能用git branch | grep'*'| cut-d''-f2来剪切分支名称,这比公认的答案要好,因为它可以在无委托的回购协议上运行,所以在将其作为TravisCI构建的一部分运行时,获取错误fatal:ref HEAD不是符号ref
,在GIT 1.9.1中似乎不起作用,``GIT 1.9.1版本fatal:ref HEAD不是符号ref``适用于我:GIT 2.16.2.windows.1获取“符号ref”的用户错误:这可能是因为您在技术上没有签出分支,并且处于“分离”状态:。因此,如果您需要命令在分离头部状态下成功退出,请使用“
/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>
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