使用 'git branch' 命令显示当前的 git 分支

Dui*_*lio 5 git

我在处理太多分支时遇到问题,需要花很多时间才能正确地找到我正在处理的当前分支。有没有办法在使用git branch命令时显示的列表顶部列出当前分支?

Eri*_*kMD 12

如果该git branch --show-current命令不适用于您的 Git 版本,您可以改用以下命令之一:

\n
$ git checkout master\n\n$ git rev-parse --symbolic-full-name HEAD\nrefs/heads/master\n$ git rev-parse --abbrev-ref HEAD\nmaster\n\n$ git symbolic-ref HEAD\nrefs/heads/master\n$ git symbolic-ref --short HEAD\nmaster\n
Run Code Online (Sandbox Code Playgroud)\n

参见 官方文档:

\n
    \n
  • git rev-parse --symbolic-full-name\n
    \n

    这类似于 --symbolic,但它省略了不是引用的输入(即分支或标记名称;或者更明确地消除“heads/master”形式的歧义,当您想要命名“master”分支时,有一个不幸的命名)标记“master”),并将它们显示为完整的引用名称(例如“refs/heads/master”)。

    \n
    \n
  • \n
  • git rev-parse --abbrev-ref[=(strict|loose)]\n
    \n

    对象名称的明确短名称。[\xe2\x80\xa6]

    \n
    \n
  • \n
  • git symbolic-ref <name>\n
    \n

    给定一个参数,读取给定符号引用引用的分支头并输出其相对于目录的路径.git/。通常,您会给出HEAD参数<name>来查看您的工作树位于哪个分支上。

    \n
    \n
  • \n
  • git symbolic-ref --short <name>\n
    \n

    当将 的值显示为符号引用时,请尝试缩短该值,例如从refs/heads/mastermaster

    \n
    \n
  • \n
\n

请注意,该git rev-parse解决方案与分离HEAD模式“兼容” ,也就是说,如果当前没有签出分支,并且HEAD仅指向 SHA1 引用,则git rev-parse上面考虑的两个命令将仅输出“HEAD”:

\n
$ git checkout 56e23844e80e6d607ad5fa56dfeedcd70e97ee70\nNote: checking out \'56e23844e80e6d607ad5fa56dfeedcd70e97ee70\'.\n\nYou are in \'detached HEAD\' state. You can look around, make experimental\nchanges and commit them, and you can discard any commits you make in this\nstate without impacting any branches by performing another checkout.\n[\xe2\x80\xa6]\n\n$ git rev-parse --symbolic-full-name HEAD\nHEAD\n$ git rev-parse --abbrev-ref HEAD\nHEAD\n$ git rev-parse HEAD\n56e23844e80e6d607ad5fa56dfeedcd70e97ee70\n
Run Code Online (Sandbox Code Playgroud)\n

  • @RandomDSdevel 确实如此,但在分离 HEAD 的情况下,该命令似乎不太“稳健”: [`git checkout HEAD^{commit}`](https://git-scm.com/docs/gitrevisions#Documentation/gitrevisions.txt -emltrevgtlttypegtemegemv0998commitem) `&amp;&amp; git symbolic-ref --short HEAD` → `致命:ref HEAD 不是符号引用` (2认同)

che*_*ner 7

如果您只想要签出的分支,请使用git branch --show-current.

  • 我不知道git有这个命令并使用````gitbranch | grep '*'``` (3认同)
  • 注意:`--show-current` 需要 Git 2.22.0+(默认情况下不可用,例如 Debian 10) (2认同)