¿Por qué difieren los comandos para deshacer cambios en Git según dónde exista actualmente el cambio?
El árbol de trabajo, el área de preparación y el historial de commits son estados distintos, y cada comando actúa sobre estados específicos.
Git solo tiene un estado, por lo que todos los comandos para deshacer son intercambiables.
Todos los comandos para deshacer modifican únicamente un repositorio remoto.
El comportamiento para deshacer depende únicamente de la extensión del archivo.