【问题标题】:Git: show remote branch name from which HEAD is detachedGit:显示与 HEAD 分离的远程分支名称
【发布时间】:2021-09-09 03:34:17
【问题描述】:

我想知道当 HEAD 在签出后分离时,是否有办法仅输出远程 git 分支的名称。

现在我正在按照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})

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

我还想更好地理解为什么当我完成这些步骤时,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 branch(和git status)通过在 reflogs 中四处游荡来跳这个“HEAD detached {at|from}...”,但是没有导出任何东西可以让你从命令行。可能应该有;你可以要求它作为一个新的 Git 功能(也许在 rev-parse 中?),或者自己处理它并将其提交到邮件列表。

标签: git github version-control branch pull-request


【解决方案1】:
git log -1 --pretty=%D

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

【讨论】:

  • 这不是我想要的。我正在寻找一个 only 输出 yourbranch 的命令
  • 然后通过添加--decorate-refs=refs/heads/*来限制装饰。或者,如果有两个分支提示指向同一个提交并且您没有附加到其中任何一个,您可以检查 reflogs 以查看您在结帐时是否按名称使用了其中一个。
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 2019-03-13
相关资源
最近更新 更多