我知道,在Git的术语中,“分离头指针”对应的状态是符号引用HEAD
没有指向任何分支。我还知道,例如git branch
会告诉我是否处于分离头指针状态。
* (detached from 9a2ef02)
master
或者不,例如。
* master
然而,我想知道是否有一种方法可以使git log --decorate
的输出完全清晰无误地表明我的状态是分离HEAD状态还是不是。
示例
假设我在master
上,并且我的历史记录如下:
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
案例1:明确的分离HEAD状态
如果我运行
git checkout 9a2ef02
那么执行 git log --decorate --oneline
命令的输出结果为:
9a2ef02 (HEAD) Correct typo in header
f0badb5 Add to-do section to README
因为在此输出中没有列出任何分支引用与
HEAD
相邻,所以我确定我已经处于分离的HEAD状态。
情况2:分离的HEAD状态还是不是?
然而,如果我运行
git checkout 4d860e9
那么HEAD
就不指向master
,而是直接指向提交4d860e9
,而master
也指向这个提交;我现在处于分离头状态。然而,从git log --decorate --oneline
的输出中无法判断。
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
因为它与我在master
分支上时完全相同。
是否有一种方法,通过一些git log
选项来消除这种不确定性?我在git-log
手册中没有找到方法...
git log
吗?有其他方法可以判断你是否处于分离 HEAD 状态,例如使用git symbolic-ref HEAD
。 - Greg Hewgillgit symbolic-ref
,但我特别询问的是git log
/git show
。 - jub0bs