Поскольку я уже создал эти изображения, я подумал, что, возможно, стоит использовать их в другом ответе, хотя описание различия между ..(точка-точка) и ...(точка-точка-точка) по существу такое же, как и в ответе Манойлда .
Команда git diffобычно показывает только разницу между состояниями дерева между двумя точками в графе фиксации. В ..и ...условных обозначениях в git diffимеют следующие значения:

Другими словами, git diff foo..barэто точно так же, как git diff foo bar; оба покажут вам разницу между кончиками двух веток fooи bar. С другой стороны, git diff foo...barпокажет вам разницу между «базой слияния» двух ветвей и кончиком bar. «База слияния» обычно является последним общим коммитом между этими двумя ветвями, поэтому эта команда покажет вам изменения, внесенные вашей работой bar, при этом игнорируя все, что было сделано fooза это время.
Это все, что вам нужно знать о ..и ...обозначения в git diff. Тем не мение...
... общий источник путаницы здесь является то , что ..и ...означает , тонко разные вещи , когда используется в команде , таких как git log, ожидающий набор коммитов как один или более аргументов. (Все эти команды в конечном итоге используются git rev-listдля анализа списка коммитов по их аргументам.)
Значение ..и ...для git logможет быть показано графически, как показано ниже:

Итак, git rev-list foo..barпоказывает вам все на ветке, barчто не на ветке foo. С другой стороны, git rev-list foo...barпоказывает все коммиты, которые есть в одном foo или bar , но не в обоих . Третья диаграмма просто показывает, что если вы перечислите две ветви, вы получите коммиты, которые находятся либо в одной, либо в обеих.
Ну, я нахожу, что все это немного сбивает с толку, и я думаю, что диаграммы коммитов помогают :)
¹ Я говорю только «как правило», поскольку, например, при разрешении конфликтов слияния git diffвы увидите трехстороннее слияние.
..и...вgit diffи их различные значения вgit log.