From NOTE revision of the manual pagesgit rev-parse :
The suffix ~<n>to the revision parameter means the commit object, which is the ancestor of the <n>th generation of the named commit object, after only the first parent.
That is rev~3equivalent rev^^^, which is equivalent rev^1^1^1.
Consider the examples in the git diffman page :
git diff HEAD^..HEAD
git diff HEAD^..
git diff HEAD^ HEAD
( chrisk HEAD^.., ).
( git diff HEAD^, Mark Longair, diff , )
:
git diff HEAD~15
git diff HEAD~15 HEAD
, ( khmarbaise ).