如何在Git中获取当前分支的名称?
要获取git中的当前分支,请使用以下命令:
git branch --show-current
git branch
只显示当前分支名称。
虽然 git branch
命令会展示所有分支,并使用星号突出显示当前所在的分支,但当需要处理许多分支时,这样做可能过于繁琐。
要仅显示当前所在的分支,可以使用以下命令:
git rev-parse --abbrev-ref HEAD
git branch --contains
有时会列出多个分支。 - Joe Chackogit branch | grep -e "^*" | cut -d' ' -f 2
只显示分支名称
很抱歉这又是一篇命令行答案,但这正是我在寻找此问题时所需要的,其中许多答案都非常有帮助。我的解决方案是以下的bash shell函数:
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
使用好老的awk,找到一个与Oliver Refalo的命令行解决方案相同长度的解决方案:
git branch | awk '/^\*/{print $2}'
awk
读作“在与正则表达式匹配的行上执行{}
中的操作”。默认情况下,它假设分隔符为空格,因此打印第二个字段。如果您可以假设只有带有星号的行是您的分支,则可以删除^。啊,Bash高尔夫!
为git状态提供一个更少嘈杂的版本就可以解决问题了。
git status -bsuno
它打印输出
## branch-name
有多种方法可以检查当前 Git
分支,但我更喜欢:
git branch --show
即使是git branch
命令也会显示当前分支名称以及所有现有分支名称列表。
git status
也有所帮助。
contrib/
中的git-prompt.sh(git版本2.3.0)中实现此功能,定义在__git_ps1
辅助函数中:
首先,如果检测到正在进行的rebase,则存在一种特殊情况。Git在rebase过程中使用未命名的分支(detached HEAD),并将原始分支保存在其他位置。
如果.git/HEAD
文件是符号链接(这是非常罕见的情况,来自Git的古老历史),则使用git symbolic-ref HEAD 2>/dev/null
。
否则,读取.git/HEAD
文件。接下来的步骤取决于其内容:
如果此文件不存在,则没有当前分支。这通常发生在存储库是裸仓库的情况下。
如果以'ref: '
前缀开头,则.git/HEAD
是symref(符号参考),并且我们处于正常分支上。删除此前缀以获取完整名称,并删除refs/heads/
以获取当前分支的简短名称:
b="${head#ref: }"
# ...
b=${b##refs/heads/}
如果它不以'ref: '
开头,那么它是分离的HEAD(匿名分支),直接指向某个提交。使用git describe ...
以人类可读的形式写出当前提交。
希望这可以帮助到你。
git describe --contains --all HEAD
命令,这在页面上其他地方我目前没有看到。正如您所知,仅提供链接的答案在 StackOverflow 上并不被推荐。 - tripleeegit-prompt.sh
(又名__git_ps1
)是如何做到的... - Jakub Narębski我会尝试以下方法之一:
1.> git symbolic-ref --short HEAD
git symbolic-ref --short HEAD
>>> sid-dev
git branch --show-current
>>> sid-dev
3.> git name-rev –name-only HEAD
git name-rev –name-only HEAD
>>> HEAD sid-dev
注意:
1.> git symbolic-ref --short HEAD 显示当前分支HEAD的短符号引用。这就是当前的分支名。
2.> git branch --show-current 也是打印当前分支名称的简单有效方法。
3.> git name-rev –name-only HEAD 给出当前分支HEAD修订版本的符号名称。
4.> 在上面的例子中,
sid-dev
是我的分支名称。
你可以在当前工作目录中使用 Git Bash 命令如下:
git status -b
它将告诉您当前所在的分支, 有许多有用的命令,其中一些是
-s
--short 以简洁格式输出。
-b --branch 即使在简短格式下也显示分支和跟踪信息。
--porcelain[=] 以易于解析的格式输出,适用于脚本。 类似于短格式输出,但不管用户配置和 Git 版本如何都保持稳定。详见下文说明。
version 参数用于指定格式版本。这是可选的,默认为原始格式 v1。
--long 以长格式输出,这是默认设置。
-v --verbose 除了显示已更改的文件名称外,还显示已准备好提交的文本更改(即类似于 git diff --cached 的输出)。如果指定了-v两次,则还显示尚未准备好提交的工作树中的更改(即类似于 git diff 的输出)。
.git/HEAD
,可能位于父目录中。 - Tino