¿Cómo decir 'git diff <commit> `a los files no rastreados que se rastreaban en` <commit> `?

Si quiero ver las diferencias entre <commit> y el directory de trabajo (WD), ejecuto

 % git diff <commit> 

Esto generalmente hace lo que yo quiero, pero si el WD contiene files que fueron rastreados en el momento en que se creó <commit> , pero no se están rastreando ahora (o en la twig actual), entonces los diffs resultantes tratan estos files en el WD como si fueran /dev/null .

Puedo imaginar situaciones en las que este sería el comportamiento adecuado, pero en este momento me gustaría poder ver las diferencias "reales" entre <commit> y el directory actual, usando la list de files que se estaban rastreando en el momento en que se creó <commit> .

¿Hay alguna forma de instruir a git diff para que se comporte de esta manera?

EDITAR: si hubiera una forma de esconder (y luego restaurar) solo el índice, tal vez ejecutar git reset <commit> antes de que git diff <commit> produjera una comparación completa entre <commit> y WD, pero no lo he hecho pero descubrió cómo save de forma selectiva (y luego restaurar) el índice … ¡Oh! Creo que podría hacer un "escondite de pobres" como este: cp -a .git/index .git/index.bak !?

Puedes usar

 git diff --diff-filter=M 

Para mostrar solo los files modificados y no los borrados

¿Qué hay de la creación de un compromiso ficticio temporal que mantiene el estado de su tree de trabajo actual, y la comparación con eso? Algo como

 $ git checkout -b working-tree-state $ git add -f . $ git commit -m "The current working tree state" $ git diff <commit>