如何获取Git中当前分支的名称?
当前回答
git branch
应显示回购协议的所有本地分支机构。星形分支是您当前的分支。
要仅检索您所在分支的名称,请执行以下操作:
git rev-parse --abbrev-ref HEAD
或Git 2.22及以上版本:
git branch --show-current
其他回答
git symbolic-ref -q --short HEAD
我在需要当前分支名称的脚本中使用这个。它将向您显示当前HEAD的简短符号引用,这将是您当前的分支名称。
使用早期的想法;假设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
很抱歉,这是另一个命令行答案,但当我发现这个问题时,我正在寻找这个答案,其中许多答案都很有用。我的解决方案是以下bashshell函数:
get_branch () {
git rev-parse --abbrev-ref HEAD | grep -v HEAD || \
git describe --exact-match HEAD 2> /dev/null || \
git rev-parse HEAD
}
这应该总是给我一些既可读又可直接用作git checkout参数的东西。
在本地分支上:feature/HS-0001在标记的提交(分离)上:v3.29.5在远程分支上(已分离,未标记):SHA1在任何其他分离的提交上:SHA1
git branch
应显示回购协议的所有本地分支机构。星形分支是您当前的分支。
要仅检索您所在分支的名称,请执行以下操作:
git rev-parse --abbrev-ref HEAD
或Git 2.22及以上版本:
git branch --show-current
git branch | grep "*" | sed "s/* //" | awk '{printf $0}' | pbcopy
将结果直接复制到粘贴板。感谢@olivier refalo的开始…
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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日志日期格式