Cómo usar el comando git stash

Aprende a usar este comando de Git para guardar cambios locales temporalmente.

git-stash

Para qué sirve git stash

git stash es un comando de Git que permite guardar temporalmente los cambios no confirmados en el directorio de trabajo sin comprometerlos en un commit. Esto es útil cuando trabajas en una rama y has realizado modificaciones en archivos sin hacer un commit, puede surgir la necesidad de cambiar de contexto, ya sea para cambiar de rama, actualizar el código o resolver un problema urgente. Sin embargo, Git no permite cambiar de rama si hay cambios sin confirmar a menos que se realice un commit o se descarte el trabajo.

Aquí es donde git stash resulta útil. Al ejecutar git stash, Git guarda los cambios en un área temporal llamada “stash” y deja el directorio de trabajo limpio, como si no se hubieran hecho cambios. Más tarde, estos cambios pueden recuperarse y aplicarse nuevamente a la rama en la que estabas trabajando.

Cuándo se usa

Algunos escenarios en los que git stash es útil incluyen:

  • Cuando necesitas cambiar de rama pero no quieres hacer un commit parcial de tu trabajo actual.
  • Antes de realizar una actualización (git pull) para evitar conflictos con cambios locales.
  • Para probar rápidamente otra implementación sin perder el trabajo actual.

Diferencia entre hacer commit y git stash

Aunque conceptualmente pueden parecer comandos parecidos, pues ambos guardan cambios, en realidad tienen funciones bien distintas. Para clarificarlo puedes ver esta tabla:

AspectoCommitGit Stash
PersistenciaPermanece en la historia del repositorioTemporal, no aparece en el historial
ContextoRepresenta un punto de control en la historia del proyectoEs un almacenamiento temporal de cambios
ColaboraciónSe comparte con otros colaboradores si se sube al repositorioEs local y no afecta a otros

Ventajas e inconvenientes de usar git stash

Ventajas

  • Permite cambiar de contexto rápidamente sin perder cambios.
  • Mantiene el historial de commits limpio y organizado.
  • Se pueden gestionar múltiples stashes con git stash list.

Inconvenientes

  • Si olvidas aplicar el stash, los cambios pueden quedar olvidados y no ser incluidos en el proyecto.
  • No se pueden hacer stashes selectivos de archivos específicos sin opciones avanzadas.

Ejemplos de cómo usar git stash

Guardar cambios en el stash

Terminal
git stash

Esto guarda los cambios no confirmados y limpia el directorio de trabajo.

Listar stashes guardados

Terminal
git stash list

Muestra una lista de los stashes guardados con su identificador.

Recuperar el último stash

Terminal
git stash pop

Aplica los cambios del último stash y lo elimina de la lista.

Aplicar un stash sin eliminarlo

Terminal
git stash apply

Esto aplica los cambios, pero mantiene el stash en la lista.

Crear un stash con mensaje

Terminal
git stash push -m "Corrigiendo bug en el login"

Esto ayuda a identificar más fácilmente los cambios guardados.

Eliminar un stash específico

Terminal
git stash drop stash@{0}

Borra un stash en particular.

Conclusión

El comando git stash es una herramienta muy útil para gestionar cambios temporales en Git sin necesidad de hacer commits innecesarios. Su uso es especialmente útil cuando necesitas cambiar de rama, actualizar el código o realizar pruebas rápidas. Sin embargo, es importante recordar que los cambios en el stash son temporales y deben ser aplicados antes de quedar olvidados.

Personalmente sólo uso git stash en el caso más común que hemos mencionado más arriba, cuando tienes que hacer pull y tienes cambios locales sin hacer commit parar rápidamente hacer traer los cambios y luego hacer git stash pop para seguir trabajando.