git worktree
git worktree: gestiona varios directorios de trabajo vinculados a un mismo repositorio.
El comando git worktree te permite tener el mismo repositorio Git extraído en varios directorios a la vez. Cada directorio de trabajo vinculado tiene sus propios archivos y su propio HEAD, así que puedes mantener ramas distintas abiertas en paralelo sin cambiar constantemente de una a otra dentro de un único directorio.
Todos los directorios de trabajo vinculados siguen perteneciendo al mismo repositorio y comparten la misma base de datos de objetos de Git y la mayoría de los metadatos del repositorio. Esto hace que un directorio de trabajo vinculado sea mucho más ligero que crear un segundo clon completo solo para inspeccionar otra rama, corregir un fallo urgente o hacer un experimento rápido aislado de tus archivos actuales.
Un caso de uso habitual es dejar que un agente de IA trabaje en una tarea en paralelo con tu trabajo principal. La IA trabaja en su propia rama, extraída en un directorio separado. Así, el agente de IA no puede estropear tu directorio de trabajo principal, donde puedes seguir programando a mano. En esencia, crear un directorio de trabajo vinculado se parece a clonar el repositorio en otro directorio, pero es un poco más rápido.
Git worktree vs. clon completo en otro directorio
Ventajas de los directorios de trabajo vinculados
- Se crean más rápido, porque no hace falta copiar todos los datos del repositorio.
- Usan menos espacio en disco porque los datos del repositorio se comparten entre directorios de trabajo vinculados en el mismo ordenador.
- Muchas herramientas de desarrollo ya integran directorios de trabajo vinculados, sobre todo para flujos con agentes de IA.
Desventajas de los directorios de trabajo vinculados
- Normalmente, la misma rama no puede estar abierta en dos directorios de trabajo vinculados al mismo tiempo.
- Cambiar la configuración del repositorio o traer información del remoto afecta a todos los directorios de trabajo vinculados a ese repositorio.
- Si necesitas un entorno totalmente independiente, con remotos o configuración separados, normalmente es mejor un clon completo.
Ejemplos
Crear un directorio de trabajo vinculado para una rama existente llamada release:
git worktree add ../project-release releaseCrear un directorio de trabajo vinculado, crear una rama nueva llamada hotfix/login y partir de main:
git worktree add -b hotfix/login ../project-hotfix mainListar todos los directorios de trabajo vinculados al repositorio actual:
git worktree listEliminar un directorio de trabajo vinculado que ya no necesitas:
git worktree remove ../project-hotfix.gitignoregit checkoutgit configgit taggit worktree