¿Cuál es la diferencia entre git stash y git clean?

En el mundo del desarrollo de software, Git es una herramienta esencial para gestionar el control de versiones. Dos de los comandos más utilizados para manejar el estado de los archivos en un repositorio son git stash y git clean. Aunque ambos sirven para organizar el trabajo y mantener un repositorio limpio, cumplen funciones diferentes y están diseñados para escenarios específicos. En este artículo, exploraremos en detalle las diferencias entre git stash y git clean, cuándo usar cada uno y algunos ejemplos prácticos.

¿Qué es git stash?

git stash es un comando que permite guardar temporalmente los cambios no confirmados (unstaged y staged) en el área de trabajo sin tener que confirmarlos en el historial de commits. Esto resulta útil cuando necesitas cambiar de rama o realizar una tarea urgente sin perder los cambios actuales.

¿Cómo funciona git stash?

El comando git stash toma los cambios en los archivos rastreados (tracked) y los almacena en una pila (stack) especial dentro de Git. Los cambios no rastreados (untracked) y los archivos ignorados por Git no se incluyen de forma predeterminada, aunque puedes optar por incluirlos utilizando git stash -u o git stash --include-untracked.

Comandos comunes de git stash

  • git stash: Guarda los cambios rastreados y limpia el área de trabajo.
  • git stash pop: Recupera los cambios más recientes del stash y los aplica al área de trabajo.
  • git stash list: Muestra todos los elementos almacenados en el stash.
  • git stash drop: Elimina un elemento específico del stash.

Ejemplo práctico de git stash

Imagina que estás trabajando en una nueva funcionalidad en una rama y, de repente, surge un problema urgente en otra rama:


# Hacer cambios en tu área de trabajo
echo "Cambio temporal" >> archivo.txt

# Guardar los cambios con git stash
git stash

# Cambiar a otra rama para resolver un problema
git checkout main

# Una vez resuelto el problema, regresa a tu trabajo
git checkout feature-branch
git stash pop

En este caso, git stash te permite guardar tu progreso temporalmente para atender un asunto urgente sin perder tus avances.

¿Qué es git clean?

git clean es un comando diseñado para eliminar archivos no rastreados y directorios del área de trabajo. A diferencia de git stash, este comando no guarda los archivos eliminados en una ubicación temporal; una vez que se eliminan, no se pueden recuperar fácilmente.

¿Cómo funciona git clean?

El comando git clean es útil cuando necesitas limpiar tu área de trabajo de archivos no deseados, como archivos generados automáticamente, resultados de compilación o archivos temporales. Por defecto, git clean no hace nada hasta que se usa con las opciones adecuadas, como -f (force) o -d (para eliminar directorios).

Comandos comunes de git clean

  • git clean -f: Elimina los archivos no rastreados.
  • git clean -fd: Elimina los archivos no rastreados y directorios.
  • git clean -n: Muestra una vista previa de los archivos que se eliminarían.
  • git clean -x: Elimina archivos ignorados por Git.

Ejemplo práctico de git clean

Supongamos que después de compilar tu proyecto, quedan varios archivos generados que no necesitas:


# Ver qué archivos se eliminarían
git clean -n

# Eliminar archivos no rastreados
git clean -f

# Eliminar archivos no rastreados y directorios
git clean -fd

Este comando asegura que tu repositorio esté limpio y listo para trabajar sin dejar rastros de archivos no deseados.

Diferencias clave entre git stash y git clean

A continuación, se presenta una tabla que resume las principales diferencias entre ambos comandos:

Aspecto git stash git clean
Propósito Guardar temporalmente cambios no confirmados. Eliminar archivos no rastreados o directorios.
Archivos afectados Archivos rastreados. Archivos no rastreados y/o ignorados.
Recuperación Los cambios pueden recuperarse fácilmente. Los archivos eliminados no se pueden recuperar fácilmente.
Uso típico Interrumpir el trabajo sin perder progreso. Limpiar el repositorio de archivos no deseados.

Cuándo usar git stash o git clean

La decisión de usar git stash o git clean depende del contexto:

  • Usa git stash cuando quieras guardar cambios en progreso que no deseas perder, pero necesitas cambiar de tarea temporalmente.
  • Usa git clean cuando quieras eliminar archivos no rastreados o limpiar tu repositorio antes de realizar operaciones importantes.

Conclusión

Tanto git stash como git clean son herramientas poderosas dentro del ecosistema de Git, pero tienen propósitos muy distintos. Comprender las diferencias entre ellos y saber cuándo utilizarlos puede ayudarte a trabajar de manera más eficiente y evitar errores comunes en la gestión de tu código. Al integrar estos comandos en tu flujo de trabajo, podrás mantener tu repositorio limpio y organizado, asegurando una experiencia de desarrollo más fluida.