Obtener git diff para cualquier rama fusionada

Por cada defecto en el código creo una rama separada. Cuando se arregla el defecto, fusiono esta rama en el maestro, por lo que tengo el historial que se ilustra a continuación (vemos dos ramas con correcciones):

          defect1 fix         defect2 fix
         a---b---c---d           e---f
        /             \         /     \
---o---1---x---y---z---2---o---3---w---4---o--- 

La pregunta es cómo obtener diff para fix1 (entre el inicio de la rama (1) y el final de la rama (2)) o fix2 (la diferencia entre (3) y (4)) en cualquier momento (por ejemplo, para cualquier defecto cerrado en el pasado) .

Actualización: la pregunta real es cómo calcular los sumas de SHA dea yd oe yf para ejecutar el siguiente comando obvio de diffdiff <commit> <commit>

Respuestas a la pregunta(4)

Su respuesta a la pregunta