HEAD and ORIG_HEAD in Git

git, git-head

Solution

`HEAD` is (direct or indirect, i.e. symbolic) reference to the current commit. It is a commit that you have checked in the working directory (unless you made some changes, or equivalent), and it is a commit on top of which "git commit" would make a new one. Usually `HEAD` is symbolic reference to some other named branch; this branch is currently checked out branch, or current branch. `HEAD` can also point directly to a commit; this state is called "detached HEAD", and can be understood as being on unnamed, anonymous branch.

And `@` alone is a shortcut for `HEAD`, since Git 1.8.5

`ORIG_HEAD` is previous state of `HEAD`, set by commands that have possibly dangerous behavior, to be easy to revert them. It is less useful now that Git has reflog: `HEAD@{1}` is roughly equivalent to `ORIG_HEAD` (`HEAD@{1}` is always last value of `HEAD`, `ORIG_HEAD` is last value of `HEAD` before dangerous operation).

For more information read git(1) manpage / [gitrevisions(7) manpage][git-revisions], Git User's Manual, the Git Community Book and Git Glossary

Problem

What do these symbols refer to and what do they mean? (I can't find any explanation in official documentation)

Original source

Related problems