поэтому первые 2 команды одинаковы, а последняя просто показывает более широкое представление в истории diff

ы различия между следующими командами ?:

git diff foo master   # a 
git diff foo..master  # b
git diff foo...master # c

Дифф руководство говорит об этом:

Сравнение ветвей

$ git diff topic master    <1>
$ git diff topic..master   <2>
$ git diff topic...master  <3>
Изменения между подсказками темы и основными ветками.То же, что и выше.Изменения, которые произошли в основной ветке с момента запуска ветки темы.

но не совсем понятно для меня.

Ответы на вопрос(4)

Ваш ответ на вопрос