获取 git 个不带前缀的分支名称

Get git branch name without prefix

我有这些分支:

refs/heads/master
refs/heads/feature/dummy

有原生的git命令只获取分支名称的最后一部分吗? (上例中的masterdummy

我试过 git rev-parse --abbrev-ref HEAD 但会得到 masterfeature/dummy

我认为没有,只是因为 git 允许在分支名称中使用正斜杠。查看 git-branch docs 以了解 branchname 是如何定义的: 此外,请查看 git-check-ref-format docs 了解如何限制它,如果需要 (--allow-onelevel).

考虑到所有这些,我认为 git 将分支名称视为一个整体,包括斜杠,因此不需要提供任何特定命令来解析它,但您始终可以通过管道分支名称到另一个将过滤掉它的工具。例如 this SO answer 解决了这种情况。您可能必须使用类似:value=${str#*/}.

以下似乎也有效:

$ git name-rev --name-only refs/heads/master
master

这似乎与您自己提出的 rev-parse 解决方案非常相似。它似乎也适用于哈希,例如其中 b51e7569master:

指向的提交
$ git name-rev --name-only b51e7569
master