Puesto que ya había creado estas imágenes, pensé que podría valer la pena usarlos en otra respuesta, aunque la descripción de la diferencia entre ..
(punto-punto) y ...
(punto-punto-punto) es esencialmente el mismo que en manojlds's answer.
El comando git diff
normalmente¹ solo muestra la diferencia entre los estados del árbol entre exactamente dos puntos en el gráfico de confirmación. Los ..
y ...
anotaciones en git diff
tienen los siguientes significados:
En otras palabras, git diff foo..bar
es exactamente el mismo que git diff foo bar
; ambos le mostrarán la diferencia entre las puntas de las dos ramas foo
y bar
. Por otro lado, git diff foo...bar
le mostrará la diferencia entre la "base de fusión" de las dos ramas y la punta de bar
. La "base de combinación" suele ser el último compromiso en común entre esas dos ramas, por lo que este comando le mostrará los cambios que su trabajo en bar
ha introducido, mientras ignora todo lo que se ha hecho en foo
mientras tanto.
Eso es todo lo que necesita saber sobre las anotaciones ..
y ...
en git diff
. Sin embargo ...
... una fuente común de confusión aquí es que ..
y ...
decir cosas sutilmente diferentes cuando se utiliza en un comando como git log
que espera un conjunto de confirmaciones como uno o más argumentos. (. Estos comandos todos terminan usando git rev-list
para analizar una lista de confirmaciones de sus argumentos)
El significado de ..
y ...
para git log
se puede mostrar gráficamente como a continuación:
Así, git rev-list foo..bar
le muestra todo en la rama bar
que no está también en la rama foo
. Por otro lado, git rev-list foo...bar
muestra todas las confirmaciones que están en foo
obar
, pero no en ambas. El tercer diagrama solo muestra que si lista las dos ramas, obtendrá las confirmaciones que están en uno o en ambos.
Bueno, me parece que todo es un poco confuso, de todos modos, y creo que el cometer diagramas de gráficos ayuda :)
¹ Sólo digo "normalmente", ya la hora de resolver los conflictos de fusión, por ejemplo, git diff
le mostrará una combinación de tres vías.
Si bien la cuestión no es un duplicado, [esta respuesta] (http://stackoverflow.com/questions/5256249/git-diff-doesnt-show -enough/5257065 # 5257065) muestra gráficamente el significado de '..' y' ... 'en' git diff' y sus diferentes significados en 'git log'. –
posible duplicado de [¿Cuáles son las diferencias entre punto doble ".." y punto triple "..." en rangos de compromiso Git?] (Http://stackoverflow.com/questions/462974/what-are-the -differences-between-double-dot-and-triple-dot-in-git-com) – chharvey