如何获取Git中当前分支的名称?
当前回答
下面的shell命令告诉您当前所在的分支。
git branch | grep ^\*
如果您不想在每次想知道分支并使用Bash时键入长命令,请为该命令提供一个短别名,例如别名cb,如下所示。
alias cb='git branch | grep ^\*'
当您在branch master中并且提示为$时,您将获得*master,如下所示。
$ cb
* master
其他回答
我知道这很晚了,但在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
找到了一个与Oliver Refalo相同长度的命令行解决方案,使用了良好的ol‘awk:
git branch | awk '/^\*/{print $2}'
awk将其理解为“在与正则表达式匹配的行上执行{}中的内容”。默认情况下,它采用空格分隔的字段,因此您可以打印第二个。如果假设只有分支所在的行具有*,则可以删除^。啊,打高尔夫!
只需在~/.bash_profile中添加以下行:
branch_show() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(branch_show)\[\033[00m\] $ "
这样,您可以在Terminal中拥有当前分支名称
由Coderwall.com提供
很抱歉,这是另一个命令行答案,但当我发现这个问题时,我正在寻找这个答案,其中许多答案都很有用。我的解决方案是以下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
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?