Como já criei essas imagens, pensei que valeria a pena usá-las em outra resposta, embora a descrição da diferença entre ..(ponto-ponto) e ...(ponto-ponto-ponto) seja essencialmente a mesma que na resposta de manojlds .
O comando git diffnormalmente¹ mostra apenas a diferença entre os estados da árvore entre exatamente dois pontos no gráfico de confirmação. As notações ..e têm os seguintes significados:...git diff

Em outras palavras, git diff foo..baré exatamente o mesmo que git diff foo bar; ambos mostrarão a diferença entre as pontas dos dois ramos fooe bar. Por outro lado, git diff foo...barmostrará a diferença entre a "base de mesclagem" dos dois ramos e a ponta de bar. A "base de mesclagem" geralmente é a última confirmação em comum entre essas duas ramificações; portanto, este comando mostra as alterações introduzidas pelo seu trabalho bar, ignorando tudo o que foi feito foonesse meio tempo.
É tudo o que você precisa saber sobre as anotações ..e . Contudo......git diff
... uma fonte comum de confusão aqui é que ..e ...significar coisas sutilmente diferentes quando usado em um comando como git logque espera um conjunto de commits como um ou mais argumentos. (Todos esses comandos acabam usando git rev-listpara analisar uma lista de confirmações de seus argumentos.)
O significado de ..e ...para git logpode ser mostrado graficamente como abaixo:

Então, git rev-list foo..barmostra tudo no ramo barque também não está no ramo foo. Por outro lado, git rev-list foo...barmostra todos os commits que estão em um foo ou bar , mas não em ambos . O terceiro diagrama mostra apenas que, se você listar as duas ramificações, obtém as confirmações que estão em uma ou em ambas.
Bem, acho que tudo isso é um pouco confuso, e acho que os diagramas de gráfico de confirmação ajudam :)
¹ Digo apenas "normalmente", pois ao resolver conflitos de mesclagem, por exemplo, git diffmostramos uma mesclagem de três vias.
..e...emgit diffe seus diferentes significados emgit log.