What is HEAD in Git?


You see the Git documentation saying things like

The branch must be fully merged in HEAD.

But what is Git HEAD exactly?


You can think of the HEAD as the "current branch". When you switch branches with git checkout, the HEAD revision changes to point to the tip of the new branch.

You can see what HEAD points to by doing:

cat .git/HEAD

In my case, the output is:

$ cat .git/HEAD
ref: refs/heads/master

It is possible for HEAD to refer to a specific revision that is not associated with a branch name. This situation is called a detached HEAD.

How to change the remote a branch is tracking?

Branch from a previous commit using Git