Por qué cada nuevo worktree se siente como una instalación nueva
Los worktrees de Git ofrecen una forma poderosa de gestionar múltiples ramas simultáneamente. Comparten el historial de un solo repositorio, pero cada worktree mantiene un directorio de trabajo separado. Esta separación es fantástica para el desarrollo en paralelo, como cuando estás manejando varias funciones o desplegando múltiples agentes de codificación de IA.
Aquí está el problema: un nuevo worktree comienza casi vacío. Git copia tu código, pero ignora intencionalmente los archivos y directorios no rastreados. Esto significa que componentes cruciales como node_modules para proyectos de JavaScript, archivos de configuración ..env o el directorio de compilación target/ de Rust están completamente ausentes.
En consecuencia, cada nuevo worktree exige una instalación en frío completa y un proceso de compilación. Debes reinstalar dependencias, recompilar código y regenerar cachés. Imagina ejecutar cinco o diez agentes de codificación, cada uno necesitando su propio .environment.
Cada agente realiza entonces su propio npm install, cargo build u otra configuración. Esto multiplica la carga: cinco agentes significan cinco instalaciones separadas, cinco compilaciones en frío y cinco veces el espacio en disco consumido. Antes de que comience cualquier trabajo útil, has gastado una cantidad significativa de tiempo, ciclos de CPU y gigabytes de almacenamiento solo para preparar las cosas.
El atajo de copy-on-write detrás de la aceleración
Worktrunk, una CLI de Rust de código abierto, ofrece una solución ingeniosa con su comando wt step copy-ignored. Esta utilidad aprovecha copy-on-write (CoW), una característica del sistema de archivos, para llevar archivos ignorados seleccionados a un nuevo worktree casi al instante, sin una copia completa tradicional.
Copy-on-write es un truco ingenioso: los archivos comparten inicialmente los mismos bloques de disco subyacentes. Cuando modificas un archivo en un worktree, el sistema de archivos copia solo los bloques cambiados a una nueva ubicación. Esto preserva el aislamiento entre worktrees mientras evita el costo inicial de duplicar archivos masivos. Es como tener múltiples copias que mágicamente solo ocupan espacio cuando realmente divergen.
Este enfoque acelera drásticamente la configuración. El video destaca ganancias impresionantes: copiar una carpeta de compilación de Rust de 14 GB supuestamente cae de unos dos minutos a aproximadamente 20 segundos. Aún mejor, una primera compilación, que normalmente podría tomar alrededor de 68 segundos en un worktree nuevo, puede reducirse a solo tres o cuatro segundos.
Estos son resultados reportados por el autor, lo que demuestra el potencial en sistemas de archivos que admiten reflinks, como APFS de macOS o btrfs y XFS de Linux. Aunque no es un resultado garantizado para cada configuración, estas cifras ilustran la reducción significativa del arranque en frío que CoW puede proporcionar, especialmente cuando se trabaja con cachés de compilación grandes o directorios node_modules.
Comprueba tu sistema de archivos antes de esperar magia
Antes de esperar resultados instantáneos, es crucial confirmar las capacidades de tu sistema. Copy-on-write (CoW), o reflinks, depende de tu sistema de archivos y configuración. Muchas Macs que ejecutan APFS y sistemas de archivos de Linux como btrfs y XFS admiten esta función, pero las configuraciones no compatibles recurrirán a una copia tradicional más lenta.
Fundamentalmente, CoW es distinto de los enlaces duros o directorios mutables compartidos. Cuando modificas un archivo en un worktree, el sistema de archivos duplica solo los bloques cambiados, asegurando que el archivo del otro worktree permanezca intacto. Esto evita cambios silenciosos e inesperados en tus .environments paralelos.
Para comprender realmente el impacto, deberías probar el comando wt step copy-ignored de Worktrunk en tu proyecto y unidad reales. Mide tanto el tiempo transcurrido como el uso del disco. Factores como los gestores de paquetes, las cachés de las herramientas de compilación e incluso las configuraciones de .worktreeinclude (para un control granular sobre lo que se copia) pueden influir en los resultados.
Por ejemplo, una carpeta de compilación de Rust de 14 GB copiada normalmente tarda unos dos minutos y consume 14 GB adicionales. Con reflinks, esto puede reducirse a unos 20 segundos y prácticamente cero espacio en disco adicional. Esto reduce drásticamente los tiempos de compilación en frío de aproximadamente 68 segundos a solo 3-4 segundos. Obtén más información sobre cómo optimizar tus flujos de trabajo de Git para agentes de IA paralelos con Worktrunk en Worktrunk — Git worktree management for parallel AI agent workflows. Recuerda, estos números son ilustrativos; ¡tus resultados pueden variar!
¿Te está gustando? Recibe uno así en tu bandeja cada mañana.
un correo al día · date de baja en dos clics · sin rastreadores de terceros
Haz que los inicios rápidos sean seguros y repetibles
Automatiza wt step copy-ignored añadiéndolo a los hooks de ciclo de vida de Worktrunk. Esto asegura que los nuevos worktrees hereden automáticamente cachés útiles, pero utiliza un archivo .worktreeinclude para especificar qué rutas ignoradas copiar. Por ejemplo, incluye target/ para proyectos de Rust o node_modules/ para JavaScript, pero excluye los archivos de registro temporales.
Selecciona las rutas deliberadamente. Los archivos ..env a menudo contienen secretos y, por lo general, no deberían copiarse. Las cachés y los artefactos generados también pueden estar obsoletos o ser específicos del entorno, lo que podría generar problemas difíciles de depurar. No todos los archivos ignorados son seguros o beneficiosos de compartir; elige con cuidado.
Implementa esta optimización con precaución. Primero, pruébala en un solo worktree. Verifica el aislamiento adecuado y la corrección de la compilación. Compara el inicio en frío del nuevo worktree con una configuración completamente limpia para confirmar la aceleración, que puede ser tan drástica como reducir una compilación de Rust de 68 segundos a 3–4 segundos.
Una vez validado, automatiza el paso de copia para el flujo de trabajo de agentes de tu equipo. Esto garantiza la consistencia y maximiza los beneficios del aprovisionamiento de worktrees casi instantáneo, transformando los inicios en frío en comienzos cálidos y productivos.
Preguntas frecuentes
¿Qué hace el comando copy-ignored de Worktrunk?
Copia archivos gitignored de un worktree existente a uno nuevo, utilizando copy-on-write donde el sistema de archivos lo admite.
¿Funciona copy-on-write en todas las unidades?
No. Depende del soporte del sistema de archivos y de la plataforma. APFS, btrfs y algunas configuraciones de XFS admiten reflinks; de lo contrario, la copia puede consumir más tiempo y espacio en disco.
¿Es seguro copiar archivos .env a otro worktree?
Solo si los mismos secretos y configuración son apropiados allí. Revisa lo que incluyes y evita compartir credenciales con proyectos o agentes que no sean de confianza.
¿Cómo utilizo el comando?
Instala Worktrunk y ejecuta wt step copy-ignored como parte de la configuración de tu worktree. Consulta la documentación de Worktrunk para conocer las opciones y configuraciones actuales.

