In simple words, the detached HEAD state means **you are not checked out to HEAD (or tip) of any branch**. ## Understand With an Example ## A branch in most of the cases is sequence of multiple commits like: **Commit 1:** master-->branch_HEAD(123be6a76168aca712aea16076e971c23835f8ca) **Commit 2:** master-->123be6a76168aca712aea16076e971c23835f8ca-->branch_HEAD(100644a76168aca712aea16076e971c23835f8ca) As you can see above in case of sequence of commits, your branch points to your latest commit. So in that case if you checkout to commit *123be6a76168aca712aea16076e971c23835f8ca* then you would be in detached head state since HEAD of your branch points to *100644a76168aca712aea16076e971c23835f8ca* and technically you are checked out at HEAD of no branch. Hence, you are in the detached HEAD state. ## Theoretical Explanation## [In this Blog][1] it's clearly stating a Git repository is a tree-of-commits, with each commit pointing to its ancestor with each commit pointer is updated and these pointers to each branch are stored in the .git/refs sub-directories. Tags are stored in .git/refs/tags and branches are stored in .git/refs/heads. If you look at any of the files, you'll find each tag corresponds to a single file, with a 40-character commit hash and as explained above by @Chris Johnsen and @Yaroslav Nikitenko, you can check out these references. [1]: http://alblue.bandlem.com/2011/08/git-tip-of-week-detached-heads.html