Featured image of post ¿Cuál es la Diferencia Entre Desarrollar con Git Worktree y Git Branch? ¿Cuándo Deberías Usar Git Worktree?

¿Cuál es la Diferencia Entre Desarrollar con Git Worktree y Git Branch? ¿Cuándo Deberías Usar Git Worktree?

¿Estás a mitad de desarrollar una nueva función y de repente necesitas arreglar un bug? ¿Cansado de entornos desordenados y restos de compilaciones? Este artículo te enseña cómo Git Worktree actúa como si abrieras una 'sucursal', permitiendo un verdadero desarrollo paralelo y aislamiento del entorno para que tu flujo de trabajo no se interrumpa.

Estás a mitad de desarrollar una nueva función cuando el jefe entra de repente con un bug urgente que arreglar. ¿Qué haces?

La mayoría de la gente probablemente usaría git stash para guardar el código a medio escribir en un cajón, y luego cambiar de rama para arreglar el bug.

Pero ¿qué pasa si tus cambios involucran configuraciones de entorno masivas, o si cambiar de rama causa que node_modules y los Artefactos de Compilación (Build Artifacts) se contaminen entre sí? Eso es suficiente para querer romper el teclado.

¡Aquí es donde Git Worktree viene al rescate!

¿Qué es Git Worktree?

Puedes pensar en el funcionamiento de Git como “renovar una casa”.

Con el tradicional git branch, cuando cambias de rama, todos los muebles de la habitación desaparecen instantáneamente ante tus ojos, y se reorganizan automáticamente para adaptarse a otra tarea.

Aunque ahorra espacio, la desventaja es la “contaminación del entorno”. Tienes que guardar tus platos sucios en el armario antes de poder cambiar; y después de cambiar, el olor a grasa de la construcción anterior aún podría persistir en el aire.

Por otro lado, Git Worktree es como construir directamente una casa idéntica en el lote vacío de al lado.

En pocas palabras, el principio subyacente de Git es:

“Un alma (base de datos .git), múltiples cuerpos (directorios de trabajo).”

Puedes poseer simultáneamente una “sucursal de desarrollo de funciones” y una “sucursal de reparación de emergencias”. Tu mano izquierda escribe lógica de IA en la Ventana A, mientras tu mano derecha arregla bugs en la Ventana B, sin que ninguna interfiera con la otra. Eso es verdadero desarrollo paralelo.

Guía Práctica de Worktree

Para mantener tu estado de flujo durante el desarrollo, la estructura de directorios y la configuración del entorno son clave.

1. Gestión de Directorios Paralelos: No Construyas Sucursales Dentro de la Sede Central

Muchas personas que usan Worktree por primera vez torpemente crean el nuevo directorio dentro de la carpeta original del proyecto. ¡Nunca hagas esto! Lanzará a Git a un lío recursivo infinito. La forma correcta de construir un Git Worktree es:

Coloca la sede central (main) y la sucursal de tareas (feature) paralelas entre sí.

# Ejecuta la creación del Worktree desde la sede central, pero coloca el directorio del Worktree fuera del directorio original del proyecto
git worktree add ../my-app-feat-ai dev-branch

Tu estructura de directorios debería verse algo así:

- my-project/       # Empaque masivo
  - main-repo/      # Sede central estable
  - feat-ai-search/ # Nueva sucursal en construcción

2. Aislamiento de la Configuración del Entorno: Dale a Cada Sucursal su Propia Alma

Dado que los directorios del proyecto están separados, tus archivos de configuración .env también pueden estar separados.

Puedes conectarte a una base de datos de pruebas en feat-ai-search, mientras mantienes la base de datos de desarrollo original en main. De esta manera, cuando cambias de ventana, ni siquiera tienes que cambiar los detalles de la conexión.

Después de entrar al directorio del Worktree, usas las variables de entorno de ese directorio específico de Worktree directamente para el desarrollo, sin tener que hacer ningún cambio de entorno o reconstrucción. Esa sensación de “entrar y ponerse a trabajar de inmediato” es verdaderamente asombrosa.

Flujo de Trabajo de Fusión (Merge) de Worktree

Después de terminar el desarrollo dentro de un Worktree, el flujo de trabajo es idéntico al de una rama tradicional, con solo una acción extra de “demolición”.

Pasos del Flujo de Trabajo Descripción
1. Commit & Push en la Sucursal Debes ir físicamente a la sucursal para firmar.
2. Inspección en la Sede Central (Merge) Puedes regresar a main para fusionar, o abrir un Pull Request (PR) directamente.
3. Demolición Elegante (Remove) Una vez que la tarea está terminada, no elimines la carpeta directamente; usa un comando de Git para derribarla: git worktree remove ../feat-ai-search

¡Boom! La cabaña temporal del Worktree es derribada, se recupera el espacio en el disco, y tu sede central sigue estando impecablemente limpia.

Guía para Evitar Trampas en Worktree

Aunque Worktree es muy útil, todavía hay algunos obstáculos a los que hay que prestar atención:

Elemento Descripción
No muevas indiscriminadamente la sede central Porque Worktree registra rutas absolutas. Si renombras el directorio de la sede central, la sucursal del Worktree perecerá porque no podrá encontrar su “alma”.
No a la doble ramificación La misma rama no puede ser verificada (checked out) simultáneamente en dos Worktrees.
Robot aspirador prune Si torpemente borras la carpeta usando rm -rf, recuerda ejecutar git worktree prune para limpiar cualquier registro restante en .git.

Conclusión: ¿Debería Dejar de Usar Git Branch?

Diferentes escenarios requieren diferentes métodos de desarrollo. No se trata de que uno reemplace al otro, sino de cuál es más adecuado.

Escenario Descripción
Pequeños ajustes diarios Sigue usando branch; es ligero y rápido.
Tareas a gran escala Por ejemplo, refactorizaciones masivas, ajustes que abarcan múltiples variables de entorno, o tareas que requieren colaboración a largo plazo con la IA, abrir un Worktree es absolutamente la mejor opción.

Git Worktree es más que un simple comando; es una herramienta poderosa que nos ayuda a mantener nuestro flujo de desarrollo. La próxima vez que te enfrentes a una tarea engorrosa y expansiva, ¡intenta abrir una “sucursal de Git Worktree” aislada y experimenta un proceso de desarrollo fluido como nunca antes!

Reference

All rights reserved,未經允許不得隨意轉載
Creado con Hugo
Tema Stack diseñado por Jimmy