获取 git 个不带前缀的分支名称
Get git branch name without prefix
我有这些分支:
refs/heads/master
refs/heads/feature/dummy
有原生的git命令只获取分支名称的最后一部分吗? (上例中的master
、dummy
)
我试过 git rev-parse --abbrev-ref HEAD
但会得到 master
和 feature/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
解决方案非常相似。它似乎也适用于哈希,例如其中 b51e7569
是 master
:
指向的提交
$ git name-rev --name-only b51e7569
master
我有这些分支:
refs/heads/master
refs/heads/feature/dummy
有原生的git命令只获取分支名称的最后一部分吗? (上例中的master
、dummy
)
我试过 git rev-parse --abbrev-ref HEAD
但会得到 master
和 feature/dummy
我认为没有,只是因为 git 允许在分支名称中使用正斜杠。查看 git-branch docs 以了解 branchname
是如何定义的:
--allow-onelevel
).
考虑到所有这些,我认为 git 将分支名称视为一个整体,包括斜杠,因此不需要提供任何特定命令来解析它,但您始终可以通过管道分支名称到另一个将过滤掉它的工具。例如 this SO answer 解决了这种情况。您可能必须使用类似:value=${str#*/}
.
以下似乎也有效:
$ git name-rev --name-only refs/heads/master
master
这似乎与您自己提出的 rev-parse
解决方案非常相似。它似乎也适用于哈希,例如其中 b51e7569
是 master
:
$ git name-rev --name-only b51e7569
master