如何获取Git中当前分支的名称?
当前回答
在Shell上,您可以执行以下操作
git branch | grep '*'
其他回答
如果您确实希望最后一个分支/标记也在分离的HEAD状态下检出。
git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev
使现代化如果你有而且不害怕awk,这会更好。
git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}'
为了我自己的参考(但可能对其他人有用),我概述了本线程中提到的大多数(基本命令行)技术,每个技术都应用于几个用例:HEAD是(指向):
本地分支(主分支)远程跟踪分支,与本地分支同步(源/主与主提交相同)远程跟踪分支,与本地分支不同步(原点/功能foo)标签(v1.2.3)子模块(在子模块目录中运行)一般分离头(以上均不适用)
结果:
git分支|sed-n'/\*/s///p'本地分支:主远程跟踪分支(同步):(与源/主分离)远程跟踪分支(不同步):(与原始/功能foo分离)标签:(与v1.2.3分离)子模块:(头部在285f294处分离)通用分离头:(与285f294分离)git状态|头-1本地分支:#在分支主机上远程跟踪分支(同步):#HEAD在源站/主站分离远程跟踪分支(不同步):#HEAD在origin/feature foo分离tag:#HEAD在v1.2.3中分离子模块:#HEAD在285f294处分离一般分离封头:#在285f294处分离封头git-descripte--全部本地分支:主管/主管远程跟踪分支(同步):头/主(注意:不是远程/原点/主)远程跟踪分支(不同步):remotes/origin/feature foo标签:v1.2.3子模块:remotes/origin/HEAD通用分离头:v1.0.6-5-g2393761cat.git/HEAD:本地分支:ref:refs/heads/master子模块:cat:.git/HEAD:不是目录所有其他用例:相应提交的SHAgit-rev-parse--缩写ref HEAD本地分支:主所有其他用例:HEADgit符号ref—短HEAD本地分支:主所有其他用例:fatal:ref HEAD不是符号ref
(仅供参考,这是使用git 1.8.3.1版完成的)
还有一种选择:
git name-rev --name-only HEAD
git branch
应显示回购协议的所有本地分支机构。星形分支是您当前的分支。
要仅检索您所在分支的名称,请执行以下操作:
git rev-parse --abbrev-ref HEAD
或Git 2.22及以上版本:
git branch --show-current
我有一个名为gitcbr(当前分支)的简单脚本,它打印出当前分支的名称。
#!/bin/bash
git branch | grep -e "^*"
我将此脚本放在一个自定义文件夹(~/.bin)中。该文件夹位于$PATH中。
所以现在,当我在git repo中时,我只需键入git cbr即可打印出当前的分行名称。
$ git cbr
* master
这是因为git命令接受其第一个参数,并尝试运行名为git-arg1的脚本。例如,gitbranch尝试运行名为gitbranch等的脚本。
推荐文章
- 在多个阶段条目的git中出现致命错误
- Git合并错误“提交不可能,因为你有未合并的文件”
- Git推送错误:拒绝更新签出的分支
- 撤销一个合并拉请求?
- Git -dir没有正常工作
- 密码身份验证暂时被禁用,作为停电的一部分。请改用个人访问令牌
- 如何使Sublime Text成为Git的默认编辑器?
- 我怎么能在' git日志'中显示分支的名称?
- Subversion中的主干、分支和标签是什么?
- 用新的.gitignore文件重新同步git repo
- 如何正确地关闭一个功能分支在Mercurial?
- 如何预览git-pull?
- 如何删除git历史记录中的特定修订?
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?