如何获取Git中当前分支的名称?
当前回答
使用早期的想法;假设sha1为40个字符;和跟踪引用(是的,应该删除调试打印行:-):
git reflog | awk '
$3 == "checkout:" && (sha == "" || sha == $1 ) {
from=$(NF - 2)
to=$NF
print from, to, length(from) > "/dev/stderr"
if (length(from) != 40) { print from ; exit; }
sha=substr(from, 1, 7)
print sha > "/dev/stderr"
}
'
给出原始输出:
$ git status
HEAD detached at 147049c
[...]
$ ./gime-branch.sh
a47be8d2167641088b66bf8f5c2bf7d3da0c642c HEAD^ 40
a47be8d
master HEAD^ 6
master
其他回答
一个简单的黑客可以
git branch|grep "*"
输出:
* <current branch>
编辑:
了解当前分支的另一种方法
git status|head -1
On branch <current branch name>
还有一种选择:
git name-rev --name-only HEAD
我知道这很晚了,但在linux/mac上,从终端可以使用以下命令。
git status | sed -n 1p
说明:
gitstatus->获取工作树状态sed-n 1p->从状态体获取第一行
对上述命令的响应如下:
"On branch your_branch_name"
您可以使用一条grep指令来完成此操作,使用Perl模式和\K来重置匹配缓冲区,因此您只能获得分支名称。
$ git branch | grep -oP "^\*\s+\K\S+$"
master
从git的2.22版本开始,您可以使用:
git branch --show-current
根据手册页:
打印当前分支的名称。在分离HEAD状态下,不打印任何内容。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式