Comandos de Git

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 release

Crear un directorio de trabajo vinculado, crear una rama nueva llamada hotfix/login y partir de main:

git worktree add -b hotfix/login ../project-hotfix main

Listar todos los directorios de trabajo vinculados al repositorio actual:

git worktree list

Eliminar un directorio de trabajo vinculado que ya no necesitas:

git worktree remove ../project-hotfix