Commits

dae68e1 sha1

References

HEAD reference
master branch
v1.0.0 tag
origin/master aka, refs/remotes/origin/master
heads/master aka, refs/heads/master

Searching back

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

Other

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

Ranges

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

Ranges illustration

A -+- E - F - G   master
   '- B - C - D   fix

master..fix   = BCD
master...fix  = BCD and EFG

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 show ":/fix bug"        # search commit with regex
git checkout v2^{}          # checkout the `v2` tag (not `v2` branch)