Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅显示Git中的当前分支_Git_Branch_Git Branch - Fatal编程技术网

仅显示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命令,但找不到。有没有比下面短或快的

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