ORIG_HEAD, FETCH_HEAD, MERGE_HEAD etc

git

Solution

`git help revisions` brings up http://git-scm.com/docs/gitrevisions, which describes all the the most common ways to reference commits:

- `HEAD` names the commit on which you based the changes in the working tree.

- `FETCH_HEAD` records the branch which you fetched from a remote repository with your last git fetch invocation.

- `ORIG_HEAD` is created by commands that move your `HEAD` in a drastic way, to record the position of the `HEAD` before their operation, so that you can easily change the tip of the branch back to the state before you ran them.

- `MERGE_HEAD` records the commit(s) which you are merging into your branch when you run git merge.

- `CHERRY_PICK_HEAD` records the commit which you are cherry-picking when you run git cherry-pick.

From the git source, you can also find out about `BISECT_HEAD`, `REVERT_HEAD`, `REJECT_NON_FF_HEAD` and several others that you will almost certainly never need.

That reference also explains suffixes (`^N`, `~N`, `@{...}`), ranges (`..` vs `...`), and more.

Problem

There's a lot of useful git references (what is the exact name for this?), e.g. `HEAD`, `ORIG_HEAD`, `FETCH_HEAD`, `MERGE_HEAD`, @{upstream} etc. Is there any reference for this? A complete list with explanations?

Original source

Related problems