2

通常,我可以使用 列出本地分支,使用 列出git branch远程分支git branch -r。但是,这些命令不适用于分离的 HEAD - 我得到了fatal: HEAD does not point to a branch(大概是因为 git branch 试图确定当前分支以便它可以用星号标记它)。

当我处于分离的 HEAD 中时,获取分支信息的最佳方式是什么?请注意,我想以相同的格式获得输出,包括着色。

4

1 回答 1

0

这应该与 Git 2.29(2020 年第四季度)更一致:“ git statusman无法通过解释记录某些事件的 reflog 条目来显示它的来源,例如“ checkout @{u}”,并给出一个硬/致命错误。

尽管本质上不可能给出正确的答案,因为 reflog 条目丢失了一些信息(例如,“ @{u}”不记录用户所在的分支,因此需要计算哪个分支“上游”,即使记录可用,分支之间的关系可能已经改变),至少隐藏错误以允许“ status”显示其输出。

那也有影响git branch

请参阅Jonathan Tan ( )的提交 f24c30e提交 ec06b05提交 a4f66a7(2020 年 9 月 1 日) 。(由Junio C Hamano 合并 -- --提交 0df670b中,2020 年 9 月 9 日)jhowtan
gitster

wt-status: 容忍悬空标记

签字人:Jonathan Tan

当用户签出 HEAD 的上游分支时,上游分支不是本地分支,然后运行 ​​" git status" ( man ),如下所示:

git clone $URL client
cd client
git checkout @{u}
git status  

没有打印任何状态,而是一条错误消息:

fatal: HEAD does not point to a branch  

git branch(运行“ ” man时出现此错误消息,即使在签出其他内容后仍然存在 - 它仅在签出分支后才会停止。)

这是因为“ git statusman在确定“HEAD detached”消息时会读取 reflog,因此尝试 DWIM“ @{u}”,但这不起作用,因为 HEAD 不再指向分支。

因此,在计算工作树的状态时,要容忍悬空标记。这是通过向 and 添加一个附加参数来完成dwim_ref()repo_dwim_ref()

于 2020-09-10T16:43:27.220 回答