Featured image of post ¿Por qué git stash cada vez que cambias de rama? ¿Qué es Git Worktree? ¿Diferencias entre Git Worktree y Git Branch? Cómo usar Git Worktree para crear un flujo de desarrollo multihilo de alta eficiencia

¿Por qué git stash cada vez que cambias de rama? ¿Qué es Git Worktree? ¿Diferencias entre Git Worktree y Git Branch? Cómo usar Git Worktree para crear un flujo de desarrollo multihilo de alta eficiencia

¿Desarrollando una nueva función y surge un Bug urgente? ¡Deja de ocultar código con git stash! Presentamos los conceptos clave de Git Worktree, sus diferencias con Git Branch, la estructura práctica de directorios y mejores prácticas con AI Agent.

¿Te ha pasado alguna vez esto? Estás en medio del desarrollo de una función compleja cuando de repente surge un Bug urgente que requiere solución inmediata.

Para cambiar de rama (branch), no te queda más remedio que ejecutar a regañadientes git stash para ocultar tu código a medio terminar. Tras reparar el Bug y regresar, debes aplicar git stash pop con mucho cuidado, enfrentándote a veces a la pesadilla de los conflictos de código.

De hecho, Git cuenta desde hace mucho tiempo con una herramienta sumamente potente para resolver este problema: Git Worktree.

Di adiós al cambio caótico de ramas y al Stash, y abraza el desarrollo multihilo con Worktree

Este artículo te guiará paso a paso por su funcionamiento interno y su aplicación práctica en el mundo real.

¿Cuál es la diferencia entre Git Worktree y Git Branch?

Para entender Git Worktree, primero aclaremos en qué se diferencia de Git Branch.

Podemos comparar el control de versiones con la lectura de un libro físico:

  • Commit es la edición / versión del libro
  • Branch es un marcador de páginas colocado en un lugar específico
  • Worktree es el escritorio de trabajo donde abres el libro

En el enfoque tradicional, solo tenemos un escritorio. Cada vez que queremos cambiar de marcador, debemos recoger todos los papeles que estamos modificando sobre la mesa o guardarlos en un cajón (es decir, git stash).

En cambio, Git Worktree te permite disponer de múltiples escritorios de trabajo independientes al mismo tiempo.

Elemento de comparación Git Branch Git Worktree
Concepto de Workspace Comparte un único directorio físico de trabajo Posee múltiples directorios físicos de trabajo independientes
Coste de cambio de rama Requiere commit, stash o guardar cambios Sin stash; basta con cambiar de directorio
Aislamiento y seguridad Archivos no guardados pueden causar conflictos o residuos Directorios aislados por completo; los cambios no interfieren
Historial de cambios Comparte el historial de Commit y ramas de Git Comparte el historial de Commit y ramas de Git

La rama activa, el área de preparación (Staging Area) y los cambios no guardados en cada Worktree son completamente independientes, pero comparten todo el historial de Commit y registro de ramas.

Branch es el marcador de versión, mientras que Worktree es el escritorio de trabajo físico

De este modo, cuando necesites cambiar de tarea, basta con abrir otra carpeta de directorio sin alterar en absoluto tu estado de desarrollo actual.

¿Cómo empezar a usar Git Worktree?

Al implementar Git Worktree en proyectos reales, una buena estructura de directorios hace que el desarrollo sea mucho más fluido.

Se recomienda mantener el directorio del proyecto original clonado con git clone como la sede limpia main, y colocar los nuevos directorios de Worktree fuera del proyecto principal (por ejemplo, ../my-app-worktrees), evitando errores de escaneo recursivo por parte de las herramientas de desarrollo.

El flujo de comandos habitual es el siguiente:

Flujo Comando
1. Crear un nuevo Worktree junto con una nueva rama git worktree add ../my-app-worktrees/feature-login -b feature-login
2. Ver la lista de todos los Worktree activos git worktree list

Git Worktree es especialmente adecuado para gestionar las tareas de desarrollo de un AI Agent.

Puedes asignar un directorio Worktree independiente al AI Agent para que realice modificaciones y pruebas libremente, mientras que los desarrolladores humanos realizan la revisión de código (Review) y pruebas en otro Worktree.

Asigna un Worktree independiente al AI Agent para procesar en paralelo el desarrollo con IA y la revisión humana

Ambos operan en sus respectivos directorios físicos, garantizando seguridad y claridad.

¿Cómo fusionar y limpiar de forma segura tras finalizar el desarrollo?

Una vez completado el desarrollo en un Worktree independiente, ¿cómo se deben integrar los resultados y realizar la limpieza?

Recuerda un concepto clave: El directorio Worktree en sí no necesita ser fusionado, lo que realmente se fusiona es la Branch.

Solo necesitas regresar al directorio del escritorio main y ejecutar git merge sobre la rama de la función correspondiente para completar la integración.

Para la limpieza, sigue el proceso estándar de dos pasos:

Paso Comando
1. Eliminar el directorio físico de Worktree git worktree remove ../my-app-worktrees/feature-login
2. Eliminar la rama de función completada git branch -d feature-login

Elimina primero el directorio Worktree y luego la Branch

Utiliza siempre el comando git worktree remove para realizar la limpieza, en lugar de borrar la carpeta manualmente desde el explorador de archivos.

¿Cuáles son las trampas comunes al usar Git Worktree?

Aunque Git Worktree es sumamente práctico, hay algunas trampas que debes tener muy en cuenta.

Trampa 1: Los cambios no guardados se perderán

Aunque eliminar un Worktree no borra la Branch en sí, si aún tienes cambios sin commit en ese directorio, la eliminación forzada del directorio Worktree provocará la pérdida definitiva de esas modificaciones.

Trampa 2: Conflictos por ocupación de ramas

El mecanismo de protección de Git no permite hacer Checkout de la misma Branch en dos Worktrees diferentes al mismo tiempo. Si intentas cambiar a una rama que ya está ocupada en un segundo Worktree, Git bloqueará la acción y mostrará un mensaje de error.

Forzar la eliminación de un Worktree provocará la pérdida de los cambios no guardados con Commit

Al dominar estas características y principios, evitarás caer en estos errores.

Conclusión

Gracias a Git Worktree, podemos despedirnos por completo del caótico cambio de ramas y del flujo git stash, logrando un verdadero desarrollo multihilo.

La próxima vez que te enfrentes a una reparación urgente de Bug, desarrolles varias funciones a la vez o asignes tareas de programación a un AI Agent, ¡prueba a abrir un nuevo escritorio de trabajo!

Reference

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