What are the differences between the following commands?:
git diff foo master # a
git diff foo..master # b
git d
The top picture is equivalent to the bottom graph tree
A0 <- A1 <- A2 <- A3 (master)
\
C0 <- C1 (test)
A picture is worth a thousand words, the difference between .. ... ^ is shown below.
$ git log master..test
# output C0 C1
$ git log ^master test
# output C0 C1
$ git log master…test
# output A1 A2 A3 C0 C1