Cómo guardar cambios temporalmente con git stash

Cómo guardar cambios temporalmente con git stash

En el día a día con Git, no siempre trabajas en una tarea de principio a fin sin interrupciones. A veces aparece una incidencia urgente, necesitas cambiar de rama o quieres probar algo rápido sin perder el trabajo que llevas adelantado. En esos casos, git stash es una de las herramientas más prácticas del flujo de trabajo.

Este comando te permite guardar temporalmente cambios locales sin crear un commit. Es decir, deja tu directorio de trabajo limpio para que puedas cambiar de contexto y, más tarde, recuperar exactamente lo que estabas editando. Si ya has visto cómo funciona el historial con git log o cómo comparar modificaciones con git diff, entender git stash te ayuda a dar un paso más en la gestión inteligente de tu trabajo local.

Qué hace exactamente git stash

Cuando ejecutas git stash, Git toma los cambios que no has comprometido y los guarda en una zona especial llamada stash. Después, restaura el estado del repositorio para que puedas seguir trabajando como si esos cambios nunca hubieran estado ahí.

Esto es útil cuando:

– Tienes cambios en progreso y debes cambiar de rama.
– Necesitas hacer pull o merge sin mezclar trabajo incompleto.
– Quieres apartar un experimento temporal para volver a él más tarde.

La ventaja principal es que no necesitas hacer un commit intermedio solo para salvar el estado actual. Eso evita ensuciar el historial con versiones que todavía no están listas. Si quieres profundizar en cómo se estructuran los cambios antes de llegar a un commit, conviene repasar git add y git commit, porque el stash se relaciona con ese flujo, aunque no lo sustituye.

Cuándo conviene usarlo

Git stash es especialmente útil en escenarios poco “limpios”, algo muy habitual en entornos reales de desarrollo. No está pensado para reemplazar una rama de trabajo, sino para resolver interrupciones de corta o media duración.

Casos típicos de uso

1. Cambio urgente de prioridad
Estás editando varios archivos y te piden corregir un fallo en producción. Guardas el trabajo temporalmente, cambias de rama y atiendes el problema.

2. Actualización del repositorio remoto
Si necesitas traer cambios con git pull o sincronizar con git fetch, pero tienes modificaciones locales que podrían generar conflicto, stash puede ayudarte a apartarlas primero.

3. Pruebas rápidas
Quieres comprobar una hipótesis técnica o ejecutar una prueba puntual, pero sin convertir esa exploración en un commit prematuro.

4. Trabajar con ramas limpias
Al cambiar entre ramas, conservar el árbol de trabajo limpio reduce el riesgo de arrastrar cambios no deseados. Si aún dudas sobre la navegación entre ramas, revisa git switch y git checkout.

Comandos básicos de git stash

La forma más simple de guardar cambios temporales es esta:

# Guarda modificaciones en el stash y limpia el árbol de trabajo
git stash

# Recupera el último stash guardado
git stash pop

# Aplica el último stash sin eliminarlo de la lista
git stash apply

# Muestra la lista de stashes disponibles
git stash list

La diferencia entre apply y pop es importante. apply recupera los cambios pero mantiene la copia guardada. pop también recupera el trabajo, pero elimina ese stash después de aplicarlo. Dicho de otra forma: apply es más conservador, pop más directo.

Si sueles inspeccionar el estado antes de hacer cualquier operación, puedes combinar esto con git status para confirmar qué está modificado antes y después de guardar el stash.

Guardar también archivos sin seguimiento

Por defecto, git stash guarda cambios sobre archivos ya rastreados por Git. Pero a veces también quieres apartar archivos nuevos que todavía no forman parte del historial. Para eso existen opciones adicionales.

# Guarda también archivos nuevos sin seguimiento
git stash -u

# Guarda incluso archivos ignorados, además de los rastreados y no rastreados
git stash -a

La opción -u o –include-untracked es muy útil cuando has creado ficheros auxiliares o prototipos que no quieres dejar visibles mientras cambias de contexto. La opción -a es más agresiva y se usa con mayor cuidado, porque incluye también lo ignorado por el repositorio.

Ver y gestionar varios stashes

Un detalle que a menudo pasa desapercibido es que Git no guarda un solo stash, sino una pila de stashes. Esto significa que puedes almacenar varios estados temporales y recuperarlos según el orden o la referencia que necesites.

# Ver el listado de stashes
git stash list

# Mostrar el contenido de un stash concreto
git stash show stash@{1}

# Mostrar diferencias detalladas de un stash
git stash show -p stash@{1}

Cuando trabajas en paralelo con varias tareas, esta capacidad es muy útil. Por ejemplo, puedes stashear una corrección rápida, continuar con otra funcionalidad y luego volver al punto exacto que guardaste antes. Si necesitas revisar cómo estaba organizado tu trabajo local en cada etapa, combinar stash con git diff te dará una visión más clara de las modificaciones guardadas.

Cómo crear un stash con mensaje

En equipos o proyectos largos, dar contexto a un stash ahorra tiempo. Git permite añadir una nota descriptiva para identificar mejor lo que guardaste.

# Guarda cambios con un mensaje descriptivo
git stash push -m "avance parcial del formulario de contacto"

Este enfoque es más legible que confiar solo en la referencia automática. Si posteriormente revisas varios stashes, el mensaje facilita saber cuál corresponde a cada tarea. Es una pequeña mejora de orden, pero muy valiosa cuando alternas entre incidencias, funcionalidades y revisiones de código.

Recuperar un stash sin perder control

Recuperar cambios no siempre significa aplicarlos de inmediato sobre la rama actual. En algunos casos, conviene inspeccionarlos antes o incluso moverlos a otro contexto.

Opciones útiles al restaurar

git stash apply
Aplica los cambios y conserva el stash guardado.

git stash pop
Aplica los cambios y elimina el stash si todo va bien.

git stash drop
Elimina un stash concreto sin recuperarlo.

git stash clear
Vacía toda la pila de stashes.

Antes de restaurar cambios, es recomendable tener claro si vas a trabajar sobre la misma rama o sobre otra distinta. En muchos flujos, primero se crea o selecciona la rama adecuada, luego se aplica el stash. Si aún estás organizando tu estrategia de ramas, los artículos sobre git branch y git merge pueden ayudarte a encajar mejor este proceso.

Buenas prácticas para usar git stash sin complicarte

Git stash es muy potente, pero conviene usarlo con criterio. No debería convertirse en un cajón desordenado donde depositas trabajo durante semanas.

Úsalo para pausas cortas o medias. Si una tarea va a quedar aparcada durante mucho tiempo, suele ser mejor crear una rama específica.

Etiqueta el stash con mensajes. Así evitarás perder tiempo buscando qué guardaste y por qué.

No lo uses para ocultar trabajo que debería revisarse. Si algo está listo para ser compartido, lo correcto suele ser crear un commit bien formado.

Revisa el estado antes y después. Un vistazo a git status te ayuda a asegurarte de que no has olvidado archivos importantes fuera del stash.

Evita depender de él como estrategia principal. Git stash es una herramienta de apoyo. Para organizar trabajo de verdad, las ramas siguen siendo la solución más sólida.

git stash frente a commit, rama o reset

Es fácil confundir stash con otras operaciones de Git, pero cada una tiene un propósito distinto. Un commit deja un punto fijo en el historial. Una rama organiza una línea de trabajo. Un reset reescribe el estado de referencia y requiere más cuidado. Stash, en cambio, funciona como un espacio temporal, rápido y reversible.

Si lo que buscas es deshacer cambios, no perder trabajo y elegir la mejor vía según el caso, te conviene revisar también cómo deshacer cambios en Git sin perder tu trabajo, git reset y git revert. Cada herramienta resuelve un problema diferente, y mezclar sus funciones suele generar más confusión que ahorro de tiempo.

Conclusión

git stash es uno de esos comandos que parecen pequeños, pero mejoran mucho la comodidad del trabajo diario. Te permite aparcar cambios temporales, cambiar de contexto con rapidez y volver a tu tarea sin perder el avance que ya habías hecho.

Bien usado, ayuda a mantener el repositorio limpio, reduce el riesgo de conflictos accidentales y te da margen para responder a interrupciones sin sacrificar productividad. Si ya manejas con soltura el estado, los commits, las ramas y la sincronización con remotos, stash se convierte en una pieza natural de tu flujo con Git.

Fuentes y lecturas recomendadas

Documentación oficial de git stash

Pro Git: Stashing and Cleaning

Atlassian Git stash tutorial

Xose de la Paz

Más de 20 años transformando pasión en profesión. Experto en desarrollo Full Stack con una visión integral que abarca desde la gestión de servidores y redes hasta el diseño de interfaz. Soy un "todoterreno" tecnológico que cree en el aprendizaje continuo y la visión global de los proyectos. Entre despliegue y despliegue, me pierdo por el mundo con mi cámara al hombro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.