Оскільки я вже створив ці зображення, я подумав, що варто застосувати їх в іншій відповіді, хоча опис різниці між ..(крапка-крапка) та ...(крапка-крапка) по суті такий же, як у відповіді Маноільдса .
Команда 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.