This page is not available in every language. Missing translations are disabled in the language selector.

Quick reference

Git Revisions & Revision Range Syntax Cheatsheet

A comprehensive reference guide for gitrevisions(7): commit object identifiers, relative ancestors (~ and ^), reflog syntax, upstream markers, and double/triple dot ranges.

· Published

Git accepts revision specifications (gitrevisions) to select individual commits, ancestry trees, and ranges across commands such as git log, git diff, and git checkout.

Common Revision Examples

Command Example Description
git log master...develop View symmetric difference between branches
git rebase -i HEAD~3 Interactively rebase the last 3 commits
git reset --hard HEAD@{2} Roll back to the state of HEAD two movements ago in reflog
git checkout v2^{} Dereference and checkout tag v2 as a commit (avoiding branch conflict)

Specifying Single Commits

Syntax Description
dae68e1 Abbreviated or full 40-character SHA-1 commit hash
HEAD Current checked-out commit
master Tip of branch named master
origin/master Tip of remote tracking branch
v1.0.0 Annotated or lightweight tag named v1.0.0

Relative Ancestry: ^ (Parent) and ~ (Generation)

Syntax Description
HEAD^ (or HEAD^1) The first parent of HEAD (immediate parent commit)
HEAD^2 The second parent of a merge commit
HEAD^^ Grandparent via first parent chain (HEAD^1^1)
HEAD~1 Same as HEAD^: 1 generation back
HEAD~2 2 generations back along the first-parent chain (HEAD^^)
HEAD~N N generations back along the first-parent chain

Reflog Syntax: @{n}

Syntax Description
HEAD@{0} Current position of HEAD
HEAD@{1} Position of HEAD prior to the latest checkout/commit
HEAD@{yesterday} Position of HEAD at a given timestamp
master@{2.weeks.ago} Tip of master as recorded 2 weeks ago

Upstream & Push Trackers

Syntax Description
@{upstream} (or @{u}) The configured remote-tracking branch for the current branch
@{push} The remote branch to which git push would publish

Revision Ranges

Two-Dot Range (r1..r2)

git log v1.0..master

Selects all commits reachable from master that are not reachable from v1.0. Equivalent to ^v1.0 master.

Three-Dot Symmetric Difference (r1...r2)

git log branch1...branch2

Selects commits reachable from either branch1 or branch2, but excludes commits shared by both.

Inverted Exclusions (^commit)

git log master ^origin/master

Commits in local master that have not yet been pushed to origin/master.

References

Related topics