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:
# 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.