gitgit-detached-head

Programmatically check if HEAD is detached?


I want to know whether I'm in a "HEAD detached" state in a script.

Currently I parse the output of git status but I dislike doing so because I've heard that it's a bad practice to parse Git output that's meant for human - I want a program-friendly interface to tell me whether HEAD is detached. I also don't want to manually look into .git/HEAD or parse git description or git branch.

Any ideas?


Solution

  • The easiest command is probably:

    $ git symbolic-ref -q HEAD
    

    and check the exit status: 0 means normal; 1 is detached.

    From the docs of git-symbolic-ref:

    -q, --quiet
       Do not issue an error message if the <name> is not a symbolic ref
       but a detached HEAD; instead exit with non-zero status silently.