如何获取Git中当前分支的名称?
当前回答
找到了一个与Oliver Refalo相同长度的命令行解决方案,使用了良好的ol‘awk:
git branch | awk '/^\*/{print $2}'
awk将其理解为“在与正则表达式匹配的行上执行{}中的内容”。默认情况下,它采用空格分隔的字段,因此您可以打印第二个。如果假设只有分支所在的行具有*,则可以删除^。啊,打高尔夫!
其他回答
在终端中写入以下命令:
git branch | grep \*
or
git branch --show-current
或Git 2.22及以上版本:
git branch --show
要仅显示当前分支的名称,请执行以下操作:
git rev-parse --abbrev-ref HEAD
参考:仅显示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
很抱歉,这是另一个命令行答案,但当我发现这个问题时,我正在寻找这个答案,其中许多答案都很有用。我的解决方案是以下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状态的噪音较小的版本会起作用
git status -bsuno
它打印出来
## branch-name
推荐文章
- 在多个阶段条目的git中出现致命错误
- Git合并错误“提交不可能,因为你有未合并的文件”
- Git推送错误:拒绝更新签出的分支
- 撤销一个合并拉请求?
- Git -dir没有正常工作
- 密码身份验证暂时被禁用,作为停电的一部分。请改用个人访问令牌
- 如何使Sublime Text成为Git的默认编辑器?
- 我怎么能在' git日志'中显示分支的名称?
- Subversion中的主干、分支和标签是什么?
- 用新的.gitignore文件重新同步git repo
- 如何正确地关闭一个功能分支在Mercurial?
- 如何预览git-pull?
- 如何删除git历史记录中的特定修订?
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?