Normalmente, el trabajo en Git funciona así: haces cambios en tu repositorio local, los pruebas cuidadosamente y luego los envías a la rama principal. Por desgracia, el trabajo no siempre se desarrolla de forma lineal. En algunas circunstancias, es posible que estés trabajando en un sitio, pero que luego tengas que trasladarte a otra rama antes de poder completar la función de la primera rama. En este caso, comprometerse no sería la opción correcta, ya que se añadirían cambios inacabados, lo que generaría mucha confusión. La solución a esto es git stash. El comando guarda los cambios iniciados y los restaura por ti.
Esto afecta a todos los cambios que aún no se han confirmado. Si luego quieres revertir estos archivos, no tienes más que recuperarlos de nuevo del git stash y terminar los cambios a tu gusto. De esta manera no pierdes ningún avance, conservas tu trabajo y al mismo tiempo tienes la libertad de seguir trabajando con flexibilidad en otros puntos. Sin git stash, obtendrías un mensaje de error durante un git checkout o incluso perderías cambios importantes.