A list of revision specifications you can use with git log and many other Git commands. Summarized from gitrevisions(7) man page.

Example usages

git log master...develop inspect differences in branches
git rebase -i HEAD~3 rebase last 3 commits
git reset --hard HEAD@{2} undo last operation that changed HEAD
git checkout v2^{} checkout the v2 tag (not v2 branch)

The 3rd argument in each of these commands is a gitrevision. These gitrevisions can be passed to many Git commands.

Common git revisions

Reference Description
git show dae68e1 sha1
git show HEAD reference
git show v1.0.0 tag
git show master local branch
git show origin/master remote branch
git show master~2 2 commits back from master
git show master..fix reachable from fix but not master
git show master...fix reachable from fix and master, but not both

These are just the common ones, there’s a lot more below! (These work in many other commands, not just git show.)

Reference

Commits

git checkout dae68e1 sha1

References

Example Description
git checkout HEAD reference
git checkout master branch
git checkout v1.0.0 tag
git checkout origin/master aka, refs/remotes/origin/master
git checkout heads/master aka, refs/heads/master

Searching back

Example Description
git checkout master@{yesterday} also 1 day ago, etc
git checkout master@{2} 2nd prior value
git checkout master@{push} where master would push to
git checkout master^ parent commit
git checkout master^2 2nd parent, eg, what it merged
git checkout master~5 5 parents back
git checkout master^0 this commit; disambiguates from tags
git checkout v0.99.8^{tag} can be commit, tag, tree, object
git checkout v0.99.8^{} defaults to {tag}
git checkout ":/fix bug" searches commit messages

Other

HEAD:README
0:README (0 to 3) …

Ranges

Ranges

git log master reachable parents from master
git log ^master exclude reachable parents from master
git log master..fix reachable from fix but not master
git log master...fix reachable from fix and master, but not both
git log HEAD^@ parents of HEAD
git log HEAD^! HEAD, then excluding parents’s ancestors
git log HEAD^{:/fix} search previous HEADs matching criteria

Ranges illustration

A ─┬─ E ── F ── G   master
   │
   └─ B ── C ── D   fix
git log master..fix BCD
git log master...fix BCD and EFG

References

0 Comments for this cheatsheet. Write yours!