Dato che avevo già creato queste immagini, ho pensato che valesse la pena usarle in un'altra risposta, sebbene la descrizione della differenza tra ..(punto-punto) e ...(punto-punto-punto) sia essenzialmente la stessa della risposta di manojlds .
Il comando in git diffgenere¹ mostra solo la differenza tra gli stati dell'albero tra esattamente due punti nel grafico di commit. Le note ..e ...in git diffhanno i seguenti significati:

In altre parole, git diff foo..barè esattamente lo stesso di git diff foo bar; entrambi ti mostreranno la differenza tra le punte dei due rami fooe bar. D'altra parte, git diff foo...barti mostrerà la differenza tra la "base di unione" dei due rami e la punta di bar. La "base di unione" è in genere l'ultimo commit in comune tra questi due rami, quindi questo comando ti mostrerà i cambiamenti che il tuo lavoro barha introdotto, ignorando tutto ciò che è stato fatto foonel frattempo.
Questo è tutto ciò che devi sapere sul ..e sulle ...annotazioni git diff. Però...
... una fonte comune di confusione qui è quella ..e ...significa cose leggermente diverse quando usate in un comando come quello git logche si aspetta un insieme di commit come uno o più argomenti. (Tutti questi comandi finiscono per utilizzare git rev-listper analizzare un elenco di commit dai loro argomenti.)
Il significato di ..e ...per git logpuò essere mostrato graficamente come di seguito:

Quindi, git rev-list foo..barti mostra tutto sul ramo barche non è anche sul ramo foo. D'altra parte, git rev-list foo...barti mostra tutti i commit che sono in uno foo o bar , ma non in entrambi . Il terzo diagramma mostra solo che se si elencano i due rami, si ottengono i commit che si trovano in uno o entrambi.
Bene, trovo che sia un po 'confuso, comunque, e penso che i diagrammi del grafico di commit aiutino :)
¹ Dico solo "tipicamente" poiché, ad esempio, quando si risolvono i conflitti di unione, git diffviene mostrata un'unione a tre vie.
..e...ingit diffe i loro diversi significati ingit log.