通常,我可以使用git branch
列出本地分支,使用git branch -r
列出远程分支。但是,这些命令不适用于分离的HEAD
- 我得到fatal: HEAD does not point to a branch
(大概是因为git branch试图确定当前分支,以便它可以用星号标记它。)
当我处于分离的HEAD时,获取分支信息的最佳方法是什么?请注意,我希望以相同的格式获得输出,包括着色。
答案 0 :(得分:0)
这应该与Git 2.29(2020年第4季度)更一致地工作:“ git status
” (man)难以通过解释记录的reflog条目来显示其来源某些事件,例如“ checkout @{u}
”,并给出了严重错误。
尽管从本质上讲不可能给出正确答案,因为reflog条目会丢失一些信息(例如,“ @{u}
”不会记录用户所在的分支,因此需要计算“上游”的哪个分支) ,即使该记录可用,分支之间的关系也可能已更改),至少隐藏该错误以允许“ status
”显示其输出。
这也会影响git branch
。
请参见commit f24c30e的commit ec06b05,commit a4f66a7,Jonathan Tan (jhowtan
)(2020年9月1日)。
(由Junio C Hamano -- gitster
--在commit 0df670b中合并,2020年9月9日)
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 status
” (man)在确定“ HEAD detached”消息时会读取reflog,因此尝试DWIM“@{u}
” ”,但这不起作用,因为HEAD不再指向分支。因此,在计算工作树的状态时,要允许悬挂标记。这是通过向
dwim_ref()
和repo_dwim_ref()
添加一个附加参数来完成的。