Tema 22 · Productividad

Guardar Cambios Temporales con git stash

Aprende a congelar y guardar cambios inacabados en el baúl temporal de Git con git stash para cambiar de rama o atender una urgencia en producción, y cómo recuperarlos intactos con git stash pop.

El Escenario Típico: Una Urgencia a Mitad de Camino

Imagina que estás en medio de programar una función compleja en tu rama; llevas 50 líneas de código escritas a medias que aún no compilan ni funcionan, y de repente tu jefe o cliente te llama: «¡Hay un error crítico en producción y debes corregirlo ya en la rama main!».

No puedes hacer commit porque tu código está a medio hacer y roto. Tampoco puedes cambiar de rama con git switch porque Git te bloqueará para no perder tus cambios. La solución elegante y mágica es: git stash.

¿Cómo Funciona el Baúl de git stash?

El comando git stash toma todos los cambios de tu Directorio de Trabajo y Staging, los guarda en una pila interna en memoria (el baúl) y deja tu proyecto completamente limpio, exactamente igual al último commit.

Ahora puedes cambiarte de rama libremente, corregir la urgencia, subir el hotfix y, al regresar a tu rama de trabajo original, ejecutas git stash pop: ¡todos tus cambios incompletos reaparecen intactos tal cual los habías dejado!

Comandos Esenciales del Baúl Temporal

Comando Acción que realiza
git stash (o git stash push -m "mensaje") Congela todos los cambios modificados y deja el directorio limpio.
git stash -u Incluye también los archivos nuevos sin seguimiento (Untracked) en el baúl.
git stash list Lista todos los guardados temporales pendientes en la pila (stash@{0}, stash@{1}...).
git stash pop Recuperar y borrar del baúl: Aplica el último guardado sobre tus archivos físicos y lo elimina de la pila.
git stash apply Aplica el último guardado pero conserva una copia en la pila de stash por si acaso.
git stash drop Elimina el último guardado del baúl sin aplicarlo.

⚡ Flujo Práctico de Congelación y Recuperación

Ejemplo paso a paso de congelar trabajo inacabado, atender una urgencia y restaurar los cambios:

guardado-temporal-stash.sh
Solo lectura
# 1. Estás trabajando y tienes cambios incompletos:
git status -s
#  M app/controllers/CourseController.php

# 2. Congelar los cambios en el baúl con un mensaje descriptivo:
git stash push -m "WIP: trabajo incompleto en modulo de quices"

# 3. Comprobar que el directorio quedó limpio al 100%:
git status
# nothing to commit, working tree clean

# 4. Cambiar a main, arreglar la urgencia y confirmarla:
git switch main
# [haces el arreglo, commit y push]

# 5. Volver a tu rama de trabajo:
git switch feature/quices

# 6. Reaparecer tus cambios exactamente donde los dejaste:
git stash pop
# Auto-merging app/controllers/CourseController.php
# Dropped refs/stash@{0}
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.