¿Qué es un stash en Git y cómo usarlo?

Git es una de las herramientas más poderosas y utilizadas en el desarrollo de software, especialmente cuando se trabaja en equipo o en proyectos de gran escala. Entre las muchas características útiles de Git, uno de los comandos más importantes y frecuentemente utilizados es el git stash. Si eres desarrollador y trabajas con Git, probablemente te hayas encontrado con la necesidad de almacenar temporalmente tus cambios antes de realizar otra tarea. Este es precisamente el objetivo del comando git stash.

¿Qué es un stash en Git?

El término “stash” en Git se refiere a un mecanismo que permite almacenar cambios locales en un área temporal, conocida como stash, sin necesidad de comprometerlos (hacer un commit). Esta funcionalidad resulta extremadamente útil cuando estás trabajando en una característica o arreglo de código, y necesitas cambiar de contexto o trabajar en algo más urgente, pero no quieres perder tus avances.

En otras palabras, el stash de Git permite guardar tu trabajo de forma temporal para poder recuperarlo más tarde, sin que este interfiera con el historial de commits del repositorio. Este comando no solo guarda los archivos modificados, sino también los archivos nuevos no versionados y los cambios en el área de staging (index).

¿Por qué usar git stash?

El uso de git stash tiene varias ventajas que lo hacen indispensable para cualquier flujo de trabajo con Git:

  • Guardar cambios sin hacer commit: A veces, necesitas cambiar de tarea rápidamente sin comprometer tu trabajo actual. El stash permite guardar esos cambios sin tener que hacer un commit incompleto.
  • Evitar el desorden en el historial de commits: Si trabajas en una característica y no está lista para ser integrada, un commit temporal no sería adecuado. Stash permite mantener el historial limpio.
  • Trabajar en diferentes tareas al mismo tiempo: Si necesitas cambiar entre ramas, pero no quieres perder tus cambios, el stash te permite guardar el trabajo pendiente sin tener que comprometerlo a una rama.

Cómo usar git stash

A continuación, te explicamos cómo utilizar el comando git stash en diferentes situaciones, desde almacenar cambios hasta recuperarlos cuando los necesites.

1. Guardar cambios en el stash

Para guardar tus cambios en el stash, simplemente usa el siguiente comando:

git stash

Este comando guardará todos los cambios no comprometidos en tu directorio de trabajo, incluidos los archivos modificados y los que estén en el área de staging. Después de ejecutar el comando, tu árbol de trabajo se restaurará al último commit realizado, permitiéndote continuar con otras tareas sin que tus cambios actuales interfieran.

2. Guardar cambios con un mensaje

Si quieres agregar un mensaje descriptivo a tu stash para recordar qué cambios has guardado, puedes usar el siguiente comando:

git stash save "mensaje descriptivo"

Esto es especialmente útil si trabajas en múltiples cambios y necesitas identificar rápidamente qué cambios están en cada stash.

3. Listar los stashes guardados

Para ver todos los stashes guardados en tu repositorio, puedes utilizar el comando:

git stash list

Este comando te mostrará un listado de todos los stashes guardados, con un identificador único para cada uno. Los stashes se numeran en orden cronológico, comenzando por el más reciente.

4. Recuperar los cambios guardados en el stash

Cuando necesites recuperar los cambios guardados en el stash, puedes utilizar el comando:

git stash apply

Este comando aplicará el último stash guardado en tu directorio de trabajo. Si deseas aplicar un stash específico de la lista, puedes hacerlo con:

git stash apply stash@{n}

Donde n es el número del stash que deseas recuperar. Recuerda que al usar apply, los cambios no se eliminan del stash, lo que te permite reutilizarlos si es necesario.

5. Recuperar y eliminar el stash

Si además de recuperar los cambios deseas eliminar el stash de la lista, puedes usar el siguiente comando:

git stash pop

Este comando aplica los cambios guardados en el stash y luego elimina el stash de la lista, liberando espacio. Es útil cuando ya no necesitas los cambios en el stash después de haberlos aplicado.

6. Eliminar un stash específico

Si deseas eliminar un stash sin aplicarlo, puedes hacerlo con el siguiente comando:

git stash drop stash@{n}

Donde n es el número del stash que quieres eliminar. Si no especificas el número, Git eliminará el último stash de la lista por defecto.

7. Limpiar todos los stashes

Si deseas eliminar todos los stashes guardados, puedes usar:

git stash clear

Este comando eliminará todos los stashes sin recuperarlos, por lo que es importante usarlo con precaución.

Consejos adicionales para usar git stash

  • Evita el desorden: Usa git stash list para revisar frecuentemente los stashes guardados y eliminar los que ya no necesites.
  • Combina con ramas: Si trabajas con múltiples ramas, puedes usar el stash para guardar cambios entre ellas sin necesidad de hacer un commit temporal.
  • Stash selectivo: Si solo deseas guardar ciertos cambios, puedes usar git stash -p para seleccionar qué cambios deseas guardar.

Conclusión

El comando git stash es una herramienta fundamental para cualquier desarrollador que trabaje con Git, ya que ofrece una forma práctica de guardar cambios temporales sin ensuciar el historial del proyecto. Al aprender cómo usarlo correctamente, puedes mejorar tu flujo de trabajo, cambiar de tarea rápidamente y evitar comprometer cambios incompletos.

Si aún no usas git stash, te animamos a probarlo y a integrar este comando en tu día a día como parte de tu proceso de desarrollo. Con los comandos explicados en este artículo, estarás listo para sacar el máximo provecho de esta funcionalidad.