I know that, in Git parlance, "detached HEAD" corresponds to a state in which the symbolic reference HEAD
is not pointing to any branch. I also know that git branch
, for instance, will tell me whether I'm in detached-HEAD state, e.g.
* (detached from 9a2ef02)
master
or not, e.g.
* master
However, I'd like to know if there is a way to make the output of git log --decorate
completely unambiguous as to whether I'm in detached-HEAD state or not. Here is an example explaining what I mean by "unambiguous".
Example
Say I'm on master
and my history looks as follows:
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
Case 1: unambiguous detached-HEAD state
If I run
git checkout 9a2ef02
then the output of git log --decorate --oneline
is
9a2ef02 (HEAD) Correct typo in header
f0badb5 Add to-do section to README
Because no branch reference is listed next to HEAD
in this output, I know for sure that I've got a detached HEAD.
Case 2: detached-HEAD state or not?
However, if I run
git checkout 4d860e9
then HEAD
does not point to master
, but directly to commit 4d860e9
, which master
also points to; I've got a detached HEAD. However, there is no way to tell from the output of git log --decorate --oneline
,
4d860e9 (HEAD, master) Remove trailing whitespace
9a2ef02 Correct typo in header
f0badb5 Add to-do section to README
because it's exactly the same as when I'm on master
.
Is there a way, via some git log
options, to remove that ambiguity? I haven't found a way in the git-log
man page...