git diff [<options>] <commit> <commit> [--] [<path>...]
This is to view the changes between two arbitrary <commit>.
git diff [<options>] <commit>..<commit> [--] [<path>...]
This is synonymous to the previous form. If <commit> on one
side is omitted, it will have the same effect as using HEAD
instead.