¿Qué compara diff -staged contra el file en git?

Entiendo que git diff compara un file en etapas y un file modificado pero no en etapas.

Pero, ¿qué files difiere git -staged (o -cached) comparar?

¿Un file por etapas y un file comprometido?

¿Cuáles son las diferencias entre git diff y git diff –staged?

Estoy un poco confundido.

Gracias por adelantado.

http://progit.org/book/ch2-2.html

Aquí hay un gráfico útil

práctico gráfico

Hablo de esto con más detalle aquí .