Git: 显示 HEAD 分离的远程分支名称

Git: show remote branch name from which HEAD is detached

我想知道是否有一种方法可以输出 远程 git 分支的名称,当 HEAD 在检出后分离时。

现在我正在按照 How to get the current branch name in Git? 中的步骤进行操作,但这仅在您处于非分离 HEAD 中时才有效。在分离的 HEAD 中,像 git rev-parse --abbrev-ref HEAD 这样的命令将简单地输出“HEAD”。

最接近显示分支名称的是 运行 git branch,它将当前分支显示为 * (HEAD detached at {remote-name}/{branch-name})

这对于实用目的来说非常好,但我的好奇心越来越强,我想知道是否有一个命令可以简单地输出 only原始分支,而不是它前面的上下文。

我还想更好地理解 为什么 在我执行这些步骤时 HEAD 正在分离。

工作流程

当我出于 PR 审查的目的检查远程分支时,会出现这种情况。以下是我 运行 到达此场景的命令:

> git remote add {name for this remote} {git url}
> git fetch {name for this remote}
> git checkout remotes/{remote-name}/{branch name}
> git branch
git log -1 --pretty=%D

将打印 HEAD -> yourbranch 如果 HEAD 的别名即附加到该分支提示,因此 git commitHEAD 的更新将被重定向到那里,只是 HEAD, yourbranch 如果 HEADyourbranch 都恰好是同一个提交的引用,但是 HEAD 不是任何东西的别名,更新 HEAD ref 只是更新 HEAD ref.