===== Overview =====
A small sample of Git revisions; different ways to refer to commits (using Linux kernel source repo).
===== Basic Git revisions =====
''HEAD'' (commonly the default) refers to the commit at the tip of the current branch:
$ git show
$ git show HEAD
Commits are also reflected in branch or tag names:
$ git show master
$ git show v4.16
And of course you can always use the full commit ID (or a sufficient prefix):
$ git show 0adb32858b0bddf4ada5f364a84ed60b196dbcda
$ git show 0adb32858b0
You can use ''git rev-parse'' to map a reference to its underlying commit ID:
$ git rev-parse v4.16
3fb78e8be9d9428fbc4c016f8b031b01a6fdd63d
$
===== Ancestral Git revisions/references =====
Given any revision, you can refer to its (first) parent, or first grandparent, and so on:
$ git show HEAD
$ git show HEAD^ (first parent)
$ git show HEAD^^ (first grandparent)
$ git show master^ (master's first parent)
$ git show v4.16^^^ (v4.16's first great-grandparent)
There's also the //tilde// notation for brevity, so these are (ignoring intermediate merge commits) equivalent:
$ git show v4.16^^^
$ git show v4.16~3
Examples using ''git diff'':
$ git diff v4.16^^ v4.16^
$ git diff v4.16^ v4.16
===== Commits with more than one parent =====
First or second parent:
$ git show HEAD^
$ git show HEAD^2
Getting carried away:
$ git show v4.19^2~3^^