En este tema, aprenderemos sobre una de las características más útiles de Git: el guardado de cambios (stashing). Esta funcionalidad permite a los desarrolladores guardar temporalmente sus cambios no confirmados para poder trabajar en otra cosa sin perder el trabajo en progreso. Es especialmente útil cuando necesitas cambiar de contexto rápidamente, por ejemplo, para revisar un bug crítico en otra rama.
¿Qué es el Guardado de Cambios?
El guardado de cambios en Git permite almacenar temporalmente las modificaciones en un área especial llamada "stash" sin tener que confirmarlas en el historial de commits. Esto es útil cuando necesitas cambiar de rama o trabajar en otra tarea sin perder tus cambios actuales.
Conceptos Clave
- Stash: Un área temporal donde se guardan los cambios no confirmados.
- Working Directory: El directorio de trabajo donde se encuentran los archivos del proyecto.
- Index (Staging Area): El área de preparación donde se colocan los cambios antes de confirmarlos.
Comandos Básicos de Stashing
Guardar Cambios en el Stash
Para guardar los cambios actuales en el stash, utiliza el comando:
Este comando guarda los cambios no confirmados en el stash y limpia el directorio de trabajo, dejándolo en el estado del último commit.
Listar Stashes
Para ver una lista de todos los stashes guardados, usa:
Este comando muestra una lista de todos los stashes con sus identificadores únicos.
Aplicar un Stash
Para aplicar los cambios guardados en el stash al directorio de trabajo, utiliza:
Este comando aplica el stash más reciente al directorio de trabajo. Si deseas aplicar un stash específico, puedes usar su identificador:
Donde n
es el índice del stash en la lista.
Eliminar un Stash
Para eliminar un stash después de aplicarlo, usa:
Si deseas eliminar un stash específico, usa su identificador:
Recuperar y Eliminar un Stash
Para aplicar y eliminar un stash en un solo paso, utiliza:
Este comando aplica el stash más reciente y lo elimina de la lista.
Ejemplo Práctico
Supongamos que estás trabajando en una nueva característica en la rama feature-branch
y necesitas cambiar a la rama master
para solucionar un bug urgente. Aquí hay un ejemplo de cómo podrías usar el stash:
-
Guardar Cambios en el Stash:
git stash
-
Cambiar a la Rama
master
:git checkout master
-
Solucionar el Bug y Confirmar los Cambios:
# Realiza los cambios necesarios git add . git commit -m "Solucionado el bug crítico"
-
Volver a la Rama
feature-branch
:git checkout feature-branch
-
Aplicar el Stash:
git stash pop
Ejercicio Práctico
Ejercicio 1: Guardar y Aplicar Cambios
- Crea un nuevo archivo
example.txt
y añade algo de contenido. - Guarda los cambios en el stash.
- Cambia a una nueva rama
test-branch
. - Vuelve a la rama original y aplica el stash.
Solución
-
Crear y modificar el archivo:
echo "Contenido inicial" > example.txt
-
Guardar los cambios en el stash:
git stash
-
Crear y cambiar a una nueva rama:
git checkout -b test-branch
-
Volver a la rama original y aplicar el stash:
git checkout master git stash pop
Resumen
En esta sección, hemos aprendido cómo usar el guardado de cambios (stashing) en Git para gestionar cambios no confirmados de manera eficiente. Hemos cubierto los comandos básicos para guardar, listar, aplicar y eliminar stashes, así como un ejemplo práctico y un ejercicio para reforzar los conceptos. Con esta herramienta, puedes cambiar de contexto rápidamente sin perder tu trabajo en progreso, mejorando así tu flujo de trabajo y productividad.
Dominando Git: De Principiante a Avanzado
Módulo 1: Introducción a Git
Módulo 2: Operaciones Básicas de Git
- Creando un Repositorio
- Clonando un Repositorio
- Flujo de Trabajo Básico de Git
- Preparando y Confirmando Cambios
- Visualizando el Historial de Confirmaciones
Módulo 3: Ramas y Fusión
- Entendiendo las Ramas
- Creando y Cambiando Ramas
- Fusionando Ramas
- Resolviendo Conflictos de Fusión
- Gestión de Ramas
Módulo 4: Trabajando con Repositorios Remotos
- Entendiendo los Repositorios Remotos
- Añadiendo un Repositorio Remoto
- Obteniendo y Extrayendo Cambios
- Empujando Cambios
- Rastreando Ramas
Módulo 5: Operaciones Avanzadas de Git
- Rebasing
- Cherry-Picking de Confirmaciones
- Guardando Cambios
- Etiquetando Confirmaciones
- Revirtiendo Confirmaciones
Módulo 6: Herramientas y Técnicas de Git
Módulo 7: Estrategias de Colaboración y Flujo de Trabajo
- Forking y Pull Requests
- Revisiones de Código con Git
- Flujo de Trabajo Git Flow
- GitHub Flow
- Integración Continua con Git
Módulo 8: Mejores Prácticas y Consejos de Git
- Escribiendo Buenos Mensajes de Confirmación
- Manteniendo un Historial Limpio
- Ignorando Archivos con .gitignore
- Mejores Prácticas de Seguridad
- Consejos de Rendimiento
Módulo 9: Solución de Problemas y Depuración
- Problemas Comunes de Git
- Deshaciendo Cambios
- Recuperando Confirmaciones Perdidas
- Tratando con Repositorios Corruptos
- Técnicas Avanzadas de Depuración