Como você faz a "diferença" apenas mostra a diferença entre dois commits, excluindo os outros commits no meio?
Pedir a diferença / entre dois commits sem incluir os commits intermediários faz pouco sentido. Os commits são apenas instantâneos do conteúdo do repositório; pedir a diferença entre dois necessariamente inclui-los. Então a questão é: o que você realmente está procurando?
Como William sugeriu, a apanha da cereja pode dar-lhe o delta de um único compromisso rebaseado em cima de outro. Ou seja:
$ git checkout 012345
$ git cherry-pick -n abcdef
$ git diff --cached
Isto toma o commit 'abcdef', compara-o ao seu antepassado imediato, e depois aplica aquela diferença em cima de '012345'. Esta nova diferença é então mostrada - a única mudança é que o contexto vem de '012345' em vez de 'abcdef's immediate ancestor'. É claro que você pode ter conflitos e etc, por isso não é um processo muito útil na maioria dos casos.
Se você está apenas interessado no abcdef em si mesmo, você pode fazer:
$ git log -u -1 abcdef
Isto se compara ao abcdef ao seu antepassado imediato, sozinho, e geralmente é o que você quer.
E, claro.
$ git diff 012345..abcdef
dá-lhe todas as diferenças entre esses dois compromissos.
Ajudaria a ter uma idéia melhor do que você está tentando alcançar - como mencionei, pedir a diferença entre dois compromissos sem o que está no meio não faz realmente sentido.