Actualmente estoy repasando un nuevo libro sobre Git, el Git Community Book. De momento lo que he leído me parece bien planteado y ayuda mucho a introducirnos en el uso de git.
Yo llevo un tiempo utilizando Git, pero nunca había leído nada sobre git-stash y me parece que este comando tiene una gran utilidad. El workflow en el que he visto que es de gran utilidad este comando sería el siguiente:
Creamos una nueva rama para añadir nueva funcionalidad:
git checkout -b new_feature
Trabajamos en esta rama, añadiendo la nueva funcionalidad y en un momento dado nos damos cuenta de algo que debemos arreglar en la rama estable. Pero aún no queremos hacer un commit en la rama ni perder los cambios que llevamos hechos para la nueva funcionalidad. Aquí entra git-stash
git stash "trabajando en new_feature"
Esto almacenará los cambios realizados para la nueva funcionalidad y nos permitirá entrar en la rama estable, realizar los cambios que detectamos y aplicarlos. Para regresar al estado anterior de la rama anterior simplemente hacemos lo siguiente:
git stash apply
Y podemos seguir trabajando para completar nuestra nueva funcionalidad.
Algunos enlaces sobre git-stash: