乐闻世界logo
搜索文章和话题

Git 如何获取当前分支名称?

9 个月前提问
5 个月前修改
浏览次数102

6个答案

1
2
3
4
5
6

git branch

应该显示您的存储库的所有本地分支。带星号的分支是您当前的分支。


要仅检索您所在分支的名称:

shell
git rev-parse --abbrev-ref HEAD

2.22 版本添加了“打印当前分支的名称”--show-current选项。该组合也适用于第一次提交之前新初始化的存储库:

shell
git branch --show-current
2024年6月29日 12:07 回复

您还可以git symbolic-ref HEAD显示完整的参考规范。

仅显示 Git v1.8 及更高版本中的分支名称(感谢 Greg 指出这一点):

shell
git symbolic-ref --short HEAD

在 Git v1.7+ 上您还可以执行以下操作:

shell
git rev-parse --abbrev-ref HEAD

如果您在一个分支上,则两者应该给出相同的分支名称。如果你有超然的头脑,答案就会有所不同。

笔记:

在早期的客户端上,这似乎有效:

shell
git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

达里恩 2014 年 3 月 26 日

2024年6月29日 12:07 回复

为了我自己的参考(但可能对其他人有用),我概述了该线程中提到的大多数(基本命令行)技术,每个技术都应用于多个用例: HEAD 是(指向):

  • 本地分支(主)
  • 远程跟踪分支,与本地分支同步(origin/master 与 master 相同提交)
  • 远程跟踪分支,与本地分支不同步(origin/feature-foo)
  • 标签(v1.2.3)
  • 子模块(在子模块目录内运行)
  • 一般独立头(以上都不是)

结果:

  • git branch | sed -n '/\* /s///p'
    • 当地分行:master
    • 远程跟踪分支(同步):(detached from origin/master)
    • 远程跟踪分支(不同步):(detached from origin/feature-foo)
    • 标签:(detached from v1.2.3)
    • 子模块:(HEAD detached at 285f294)
    • 一般独立头:(detached from 285f294)
  • git status | head -1
    • 当地分行:# On branch master
    • 远程跟踪分支(同步):# HEAD detached at origin/master
    • 远程跟踪分支(不同步):# HEAD detached at origin/feature-foo
    • 标签:# HEAD detached at v1.2.3
    • 子模块:# HEAD detached at 285f294
    • 一般独立头:# HEAD detached at 285f294
  • git describe --all
    • 当地分行:heads/master
    • 远程跟踪分支(同步):(heads/master注意:不是 remotes/origin/master
    • 远程跟踪分支(不同步):remotes/origin/feature-foo
    • 标签:v1.2.3
    • 子模块:remotes/origin/HEAD
    • 一般独立头:v1.0.6-5-g2393761
  • cat .git/HEAD:
    • 当地分行:ref: refs/heads/master
    • 子模块:cat: .git/HEAD: Not a directory
    • 所有其他用例:相应提交的 SHA
  • git rev-parse --abbrev-ref HEAD
    • 当地分行:master
    • 所有其他用例:HEAD
  • git symbolic-ref --short HEAD
    • 当地分行:master
    • 所有其他用例:fatal: ref HEAD is not a symbolic ref

(仅供参考,这是使用 git 版本 1.8.3.1 完成的)

2024年6月29日 12:07 回复

从 git 2.22 版本开始,你可以使用:

shell
git branch --show-current

根据手册页:

打印当前分支的名称。在分离头状态下,不打印任何内容。

2024年6月29日 12:07 回复

在 Git 中,有几种方法可以获取当前分支的名称,这里将介绍两种常用的方法:

1. 使用 git branch 命令

运行 git branch 命令时,它会列出仓库中的所有分支。当前分支会以一个星号 (*) 标记显示在列表中。例如:

bash
$ git branch main * develop feature-xyz

在这个例子中,当前分支是 develop

2. 使用 git rev-parse 命令

如果需要在脚本中使用或者想要直接获取当前分支的名称,可以使用 git rev-parse 命令。这种方式会直接输出当前分支的名称,而不会显示其他分支信息。命令如下:

bash
$ git rev-parse --abbrev-ref HEAD

这条命令会输出当前分支的名称。例如,如果当前分支是 develop,则输出会是:

shell
develop

这个方法很适合自动化脚本中,因为它直接返回当前分支的名称,而不包含其他额外信息。

示例使用场景

假设我在一个软件开发项目中工作,项目采用 Git 进行版本控制。我需要确保我正在 feature-new-ui 分支上开发新的用户界面功能。为了验证我当前的工作环境,我可以使用以下命令:

bash
$ git rev-parse --abbrev-ref HEAD

如果返回的分支名称是 feature-new-ui,那么我可以安心地继续我的开发任务;如果不是,我需要切换到正确的分支上。

这样的命令使用可以有效避免在错误的分支上进行开发,减少将来可能出现的合并冲突或错误。

2024年6月29日 12:07 回复

你的答案