Tutorial de Git worktree: trabaja en varias ramas sin cambiar
Un tutorial práctico de Git worktree que muestra cómo trabajar en varias ramas a la vez, acelerar las revisiones y evitar stashes o cambios de contexto.
Estás trabajando en una rama de funcionalidad cuando un compañero te pide que revises su pull request. Podrías hacer stash de tus cambios, cambiar de rama y confiar en que recordarás por dónde ibas. O podrías hacer un commit a medias solo para no perder el trabajo. Luego llega el hotfix de emergencia: producción está caída y tú estás metido en una refactorización que toca medio repositorio. Cada cambio de contexto como este te cuesta 10–15 minutos de puesta a punto y te corta el flujo.
Git worktree lo resuelve permitiéndote tener varias ramas a la vez en directorios separados. En lugar de hacer stash o confirmar trabajo incompleto, simplemente haces cd a otro directorio donde ya está esa rama. Trabaja en el hotfix, despliega y luego vuelve con cd a tu funcionalidad justo como la dejaste.
En este tutorial, te enseñaré a crear y gestionar worktrees, evitar errores comunes e integrarlos en tu flujo de trabajo diario. Ya deberías entender las ramas de Git, los commits y las operaciones básicas en la línea de comandos. Si necesitas repasar los fundamentos de Git primero, te recomiendo el tutorial Introduction to Git de DataCamp para cubrir lo esencial.
¿Qué es Git worktree?
Git worktree es una función integrada que crea directorios de trabajo adicionales enlazados al mismo repositorio. Tu directorio de trabajo principal es el worktree primario, y cada worktree adicional que crees tiene su propio directorio con su propia rama marcada. Todos estos worktrees se conectan al mismo repositorio .git.
Esta arquitectura compartida implica que los commits que hagas en cualquier worktree aparecen de inmediato en la base de datos compartida de Git, accesibles desde los demás worktrees. Los archivos en sí permanecen independientes: editar train.py en un worktree solo afecta a ese directorio hasta que confirmes los cambios.
¿Por qué no usar simplemente varias terminales?
No puedes abrir varias terminales en el mismo directorio y trabajar en ramas distintas a la vez. Git solo permite una rama marcada por directorio. Cuando ejecutas git checkout feature-b en una terminal, cambia los archivos para todas las terminales que apuntan a ese directorio.
Git worktree lo soluciona dando a cada rama su propio directorio. Cada directorio es totalmente independiente con sus propios archivos, procesos en ejecución y artefactos de build. Cambiar entre ramas pasa a ser cd ../different-directory en lugar de git checkout different-branch.
Requisitos previos de Git worktree
Antes de usar git worktree, verifica tu configuración:
Git 2.5 o posterior: ejecuta git --version para comprobarlo. Git worktree llegó en 2015, así que la mayoría de instalaciones lo incluyen
Repositorio Git existente: necesitarás un repositorio con al menos una rama
Familiaridad con la terminal: todas las operaciones de worktree se hacen en la terminal
Git worktree va genial cuando cambiar de rama interrumpiría tu trabajo actual:
Revisiones de código: prueba los cambios de un compañero sin hacer stash de tu funcionalidad
Hotfixes de emergencia: corrige bugs en producción sin tocar tu refactorización
Desarrollo en paralelo: trabaja en dos funcionalidades independientes sin cambiar de rama constantemente
Procesos de larga duración: lanza una batería de tests de 30 minutos y sigue programando en otro worktree
Sáltalo para tareas rápidas de menos de 10 minutos donde git checkout es más simple, o cuando te centras en una sola cosa y no esperas interrupciones.
Crea tu primer worktree
La mejor forma de entender git worktree es crear uno y verlo en acción. Veremos los comandos básicos, exploraremos la estructura que crea Git y observaremos cómo fluyen los cambios entre worktrees.
Preparar un repositorio de ejemplo
Antes de lanzarte con los worktrees, necesitas un repositorio Git. Si ya tienes un proyecto en Python con varias ramas, salta a la siguiente sección. Si no, montemos rápido un pipeline de ML sencillo:
Confirma estos archivos y crea una rama de funcionalidad:
gitadd.git commit -m"Initial commit"git branch feature-preprocessingCon la tecnología de
Ahora tienes un repositorio con dos ramas: main (tu rama actual) y feature-preprocessing.
Creación básica de un worktree
Crear un worktree para una rama existente requiere un solo comando. Marquemos feature-preprocessing en un directorio aparte:
git worktree add../ml-pipeline-preprocessing feature-preprocessingCon la tecnología de
Esto crea un nuevo directorio llamado ml-pipeline-preprocessing un nivel por encima de tu ubicación actual, marca allí la rama feature-preprocessing y lo enlaza a tu repositorio existente.
Git confirma la creación:
Preparing worktree (checking out 'feature-preprocessing')
HEAD is now at 0a7f986 Initial commitCon la tecnología de
Para trabajo totalmente nuevo, crea a la vez la rama y el worktree:
git worktree add -b feature-visualization ../ml-pipeline-vizCon la tecnología de
La opción -b crea una rama nueva llamada feature-visualization y la marca en el nuevo worktree.
Explorar la estructura de worktree
Con el worktree creado, ahora tienes varios directorios en tu sistema de archivos. Para verlos todos:
/Users/you/projects/ml-pipeline 0a7f986 [main]
/Users/you/projects/ml-pipeline-preprocessing 0a7f986 [feature-preprocessing]Con la tecnología de
La primera línea muestra tu worktree principal —el directorio original que contiene la carpeta .git—. La segunda línea muestra tu worktree enlazado. Ambas muestran el hash del commit actual y la rama marcada.
Cada directorio de worktree funciona como un repositorio Git completo. Puedes entrar, editar archivos, ejecutar git status y hacer commits. Los worktrees enlazados no contienen un directorio .git completo, sino un archivo .git que apunta al repositorio principal. Dentro del .git principal, una carpeta worktrees almacena metadatos de cada worktree enlazado.
Trabajar en un worktree
Ve al worktree de feature-preprocessing y haz un commit:
Guarda tu refactorización en algún sitio (stash o commit WIP)
Cambia a la rama main
Corrige el bug
Haz push a producción
Vuelve a la rama de la funcionalidad
Restaura tus cambios (unstash o revierte el commit WIP)
Recupera el contexto mental de lo que estabas haciendo
Con worktrees:
git worktree add../ml-pipeline-hotfix main
cd../ml-pipeline-hotfixCon la tecnología de
Corrige y despliega:
gitadd src/data/validation.py
git commit -m"Fix schema validation for nullable timestamp fields"git push origin main
cd../ml-pipeline
git worktree remove ../ml-pipeline-hotfixCon la tecnología de
En segundos vuelves a tu refactorización, con todos los archivos exactamente como los dejaste.
Desarrollo de funcionalidades en paralelo
Estás implementando métricas personalizadas y un nuevo data loader: dos funcionalidades independientes. Crea un worktree para cada una:
git worktree add-b feature-custom-metrics ../ml-pipeline-metrics
git worktree add-b feature-streaming-loader ../ml-pipeline-loaderCon la tecnología de
Tu sistema de archivos ahora se ve así:
~/projects/
ml-pipeline/ [main] - tu trabajo habitual
ml-pipeline-metrics/ [feature-custom-metrics]
ml-pipeline-loader/ [feature-streaming-loader]Con la tecnología de
Ejecuta ambas funcionalidades en paralelo, cada una en su terminal:
# Terminal 1cd ~/projects/ml-pipeline-metrics
python experiments/evaluate_custom_metrics.py
# Terminal 2 cd ~/projects/ml-pipeline-loader
pytest tests/test_data_loader.py -vCon la tecnología de
Ambos procesos se ejecutan a la vez sin conflictos. Cuando una funcionalidad esté lista, fusiónala y elimina el worktree:
cd ~/projects/ml-pipeline
git merge feature-custom-metrics
git worktree remove ../ml-pipeline-metricsCon la tecnología de
/Users/you/projects/ml-pipeline a3f9c81 [main]
/Users/you/projects/ml-pipeline-review b7d4e92 [pr/data-validation]
/Users/you/projects/ml-pipeline-hotfix a3f9c81 [hotfix/schema-bug]Con la tecnología de
Cada línea muestra la ruta del directorio, el hash del commit actual y la rama marcada. La primera entrada es siempre tu worktree principal (que contiene la carpeta .git) y el resto son worktrees enlazados.
Para scripting o navegación rápida, extrae solo las rutas:
Veamos cómo sacarle el máximo partido a los worktrees y cómo evitar errores habituales.
Organización de worktrees
Dónde colocas los worktrees importa. La mayoría los pone como directorios hermanos del repositorio principal:
~/projects/
ml-pipeline/ # worktree principal
ml-pipeline-feature-auth/ # worktree enlazado
ml-pipeline-hotfix-login/ # worktree enlazadoCon la tecnología de
Esta estructura mantiene todo junto y hace que las rutas sean previsibles. El patrón nombreproyecto-nombrerama te dice exactamente qué hay en cada directorio.
Algunos prefieren una carpeta dedicada:
~/projects/
ml-pipeline/ # worktree principal
ml-pipeline-worktrees/
feature-auth/
hotfix-login/Con la tecnología de
Elige un enfoque y úsalo de forma consistente. Nombres descriptivos como ml-pipeline-user-authentication hacen que los directorios se expliquen solos, mientras que nombres genéricos como ml-pipeline-temp o ml-pipeline-2 te obligan a mirar dentro. Trata los worktrees como temporales: créalos para una tarea concreta y elimínalos al terminar.
fatal: 'main' is already used by worktree at '/Users/you/projects/ml-pipeline'Con la tecnología de
Esta protección existe porque podrías hacer commits en conflicto. Si necesitas el mismo código en dos sitios, crea una rama nueva.
Worktrees olvidados y espacio en disco
Cada worktree permanece en tu disco hasta que lo eliminas explícitamente. Los worktrees viejos se acumulan; hay proyectos con 15 o más worktrees olvidados que consumen gigas.
Cada worktree contiene una copia completa de los archivos del repositorio. Un repositorio de 500 MB con 5 worktrees ocupa 2,5 GB. Elimina worktrees cuando acabes:
git worktree list
git worktree remove ../ml-pipeline-old-featureCon la tecnología de
Anidar worktrees
No crees un worktree dentro del directorio de otro worktree. Git lo permite, pero genera estructuras confusas y complica la limpieza.
Optimización del flujo de trabajo
Los alias de shell ahorran tiempo si creas worktrees a menudo:
aliasgwl='git worktree list'aliasgwa='git worktree add'aliasgwr='git worktree remove'Con la tecnología de
Para configuraciones más complejas, escribe una función que cree un worktree y configure tu entorno de desarrollo en un paso:
wt(){git worktree add"../${PWD##*/}-$1"-b"$1"cd"../${PWD##*/}-$1"
python -m venv .venv &&source .venv/bin/activate && pip install-r requirements.txt
}Con la tecnología de
La variable ${PWD##*/} extrae el nombre de tu directorio actual. Al ejecutar wt feature-logging desde ml-pipeline se crea ml-pipeline-feature-logging, entras en él y se configura un entorno virtual de Python con dependencias.
Adáptalo a tu lenguaje: sustituye la configuración de Python por bundle install en Ruby, cargo build en Rust o npm install en Node.js.
Tu editor o IDE funciona con worktrees sin configuración especial. Cada worktree es solo un directorio, así que ábrelo como cualquier proyecto. La mayoría de editores modernos permiten abrir varias raíces a la vez: puedes tener tres worktrees en una ventana y cambiar entre ellos desde la barra lateral.
Worktrees avanzados: desarrollo en paralelo con ayuda de IA
Si usas asistentes de programación con IA, los worktrees desbloquean un potente flujo de trabajo en paralelo. Este enfoque ha ganado tracción entre desarrolladores y equipos en 2024–2025.
Crea worktrees separados para tareas distintas:
git worktree add-b feature-add-logging ../ml-pipeline-logging
git worktree add-b feature-optimize-preprocessing ../ml-pipeline-optim
git worktree add-b bugfix-memory-leak ../ml-pipeline-bugfixCon la tecnología de
Abre un panel de terminal para cada worktree y lanza tu asistente de IA:
# Pane 1cd ~/projects/ml-pipeline-logging
claude
# Pane 2cd ~/projects/ml-pipeline-optim
claude
# Pane 3cd ~/projects/ml-pipeline-bugfix
claudeCon la tecnología de
Cada instancia de IA trabaja en una funcionalidad distinta sin interferencias. Hay equipos que informan de completar trabajo en horas que antes llevaba días. Por ejemplo, incident.io ejecuta 4–5 agentes de Claude Code en paralelo usando este patrón. En un caso, Claude estimó una mejora de UI en 2 horas y la acabó en 10 minutos.
Aspectos a tener en cuenta:
Consumo de tokens: varias sesiones de IA usan más créditos de API y pueden topar con límites de rate
Coste de preparación: cada worktree necesita su propio entorno y dependencias
Carga cognitiva: gestionar varias conversaciones en tareas distintas
Funciona bien para funcionalidades grandes e independientes (30+ minutos cada una) donde el trabajo no toca los mismos archivos y tienes cuota de API suficiente. Evítalo para bugs rápidos, funcionalidades muy acopladas o cuando estés cerca de los límites de la API.
Conclusión
Recuerda el escenario del principio: un compañero necesita una revisión de PR mientras tú estás a mitad de una funcionalidad. Ya sabes la solución: git worktree add ../ml-pipeline-review pr/branch-name y luego cd para empezar a revisar. Tu trabajo de funcionalidad se mantiene intacto. Sin stash, sin commits a medias, sin sobrecarga mental para reconstruir el contexto al volver. Dos directorios, dos ramas, cero fricción.
Git worktree no añade complejidad a tu flujo: la elimina. Cada worktree es solo un directorio con una rama marcada. Pero esa sencillez desbloquea algo potente: la capacidad de cambiar de contexto al instante sin la carga cognitiva de hacer stash, cambiar de rama y reconstruir tu modelo mental.
Cuando necesites integrar worktrees con la colaboración en equipo —como pull requests y revisiones de código—, el itinerario de habilidades GitHub Foundations de DataCamp cubre las prácticas esenciales para trabajar eficazmente con equipos distribuidos.
Preguntas frecuentes sobre Git worktree
¿Puedo usar Git worktrees con GitHub Desktop, VS Code u otras herramientas GUI?⌄
Sí. Los worktrees aparecen para editores y GUIs de Git como carpetas de proyecto normales. Puedes abrir cada worktree como un proyecto independiente, y la mayoría de herramientas —incluidas VS Code, IntelliJ y GitHub Desktop— los manejan sin configuración especial.
¿Cómo interactúan los Git worktrees con remotos como origin?⌄
Todos los worktrees comparten el mismo directorio .git, por lo que comparten la misma configuración de remotos y el historial de fetch. No necesitas ejecutar git fetch en cada worktree: al hacer fetch en uno, se actualizan los remotos para todos. El seguimiento de ramas se comporta exactamente igual que en una configuración con un solo worktree.
¿Qué pasa si borro un directorio de worktree manualmente en lugar de usar git worktree remove?⌄
Git seguirá pensando que el worktree existe y lo marcará como “prunable”. No romperás el repositorio, pero los comandos de Git pueden mostrar avisos. Ejecuta git worktree prune para limpiar la entrada obsoleta y eliminar de forma segura los metadatos huérfanos.
¿Es seguro usar Git worktrees con monorepos grandes o sistemas de build como Bazel, Pants o Nx?⌄
Sí, pero los artefactos de build pueden multiplicarse rápido. Cada worktree tiene su propio directorio de trabajo, así que cachés, entornos virtuales y salidas de compilación se duplican. En monorepos es habitual configurar las herramientas de build para guardar las cachés fuera del worktree y evitar un uso excesivo de disco.
¿Puedo usar Git worktrees con submodules o sparse checkouts?⌄
Sí. Los submodules y los sparse checkouts funcionan con normalidad en worktrees, pero necesitas inicializarlos o actualizarlos por separado en cada worktree porque el contenido del directorio de trabajo no se comparte. Los datos subyacentes de Git siguen siendo compartidos, pero los archivos extraídos son independientes.
Soy creador de contenidos sobre ciencia de datos con más de 2 años de experiencia y uno de los mayores seguimientos en Medium. Me gusta escribir artículos detallados sobre IA y ML con un toque sarcástico, porque hay que darle algo de vidilla al tema. He publicado más de 130 artículos y un curso en DataCamp, y tengo otro en marcha. Mis contenidos han sido vistos por más de 5 millones de personas; 20.000 de ellas se convirtieron en seguidores tanto en Medium como en LinkedIn.
Aprende por qué git pull --force no es la mejor forma de sobrescribir una rama local con la versión remota, y descubre el método adecuado utilizando git fetch y git reset.
La poda Git es un comando Git que elimina del repositorio los objetos que ya no son accesibles desde ninguna confirmación o rama, ayudando a liberar espacio en disco.
Estás trabajando en una rama de funcionalidad cuando un compañero te pide que revises su pull request. Podrías hacer stash de tus cambios, cambiar de rama y confiar en que recordarás por dónde ibas. O podrías hacer un commit a medias solo para no perder el trabajo. Luego llega el hotfix de emergencia: producción está caída y tú estás metido en una refactorización que toca medio repositorio. Cada cambio de contexto como este te cuesta 10–15 minutos de puesta a punto y te corta el flujo.
Git worktree lo resuelve permitiéndote tener varias ramas a la vez en directorios separados. En lugar de hacer stash o confirmar trabajo incompleto, simplemente haces
cda otro directorio donde ya está esa rama. Trabaja en el hotfix, despliega y luego vuelve concda tu funcionalidad justo como la dejaste.En este tutorial, te enseñaré a crear y gestionar worktrees, evitar errores comunes e integrarlos en tu flujo de trabajo diario. Ya deberías entender las ramas de Git, los commits y las operaciones básicas en la línea de comandos. Si necesitas repasar los fundamentos de Git primero, te recomiendo el tutorial Introduction to Git de DataCamp para cubrir lo esencial.
¿Qué es Git worktree?
Git worktree es una función integrada que crea directorios de trabajo adicionales enlazados al mismo repositorio. Tu directorio de trabajo principal es el worktree primario, y cada worktree adicional que crees tiene su propio directorio con su propia rama marcada. Todos estos worktrees se conectan al mismo repositorio
.git.Esta arquitectura compartida implica que los commits que hagas en cualquier worktree aparecen de inmediato en la base de datos compartida de Git, accesibles desde los demás worktrees. Los archivos en sí permanecen independientes: editar
train.pyen un worktree solo afecta a ese directorio hasta que confirmes los cambios.¿Por qué no usar simplemente varias terminales?
No puedes abrir varias terminales en el mismo directorio y trabajar en ramas distintas a la vez. Git solo permite una rama marcada por directorio. Cuando ejecutas
git checkout feature-ben una terminal, cambia los archivos para todas las terminales que apuntan a ese directorio.Git worktree lo soluciona dando a cada rama su propio directorio. Cada directorio es totalmente independiente con sus propios archivos, procesos en ejecución y artefactos de build. Cambiar entre ramas pasa a ser
cd ../different-directoryen lugar degit checkout different-branch.Requisitos previos de Git worktree
Antes de usar git worktree, verifica tu configuración:
git --versionpara comprobarlo. Git worktree llegó en 2015, así que la mayoría de instalaciones lo incluyenComprueba que worktree está disponible:
Si se muestra la página de ayuda, estás listo.
Cuándo usar git worktree
Git worktree va genial cuando cambiar de rama interrumpiría tu trabajo actual:
Sáltalo para tareas rápidas de menos de 10 minutos donde
git checkoutes más simple, o cuando te centras en una sola cosa y no esperas interrupciones.Crea tu primer worktree
La mejor forma de entender git worktree es crear uno y verlo en acción. Veremos los comandos básicos, exploraremos la estructura que crea Git y observaremos cómo fluyen los cambios entre worktrees.
Preparar un repositorio de ejemplo
Antes de lanzarte con los worktrees, necesitas un repositorio Git. Si ya tienes un proyecto en Python con varias ramas, salta a la siguiente sección. Si no, montemos rápido un pipeline de ML sencillo:
Crea un README y un script de Python:
Verifica que se han creado los archivos:
Confirma estos archivos y crea una rama de funcionalidad:
Ahora tienes un repositorio con dos ramas:
main(tu rama actual) yfeature-preprocessing.Creación básica de un worktree
Crear un worktree para una rama existente requiere un solo comando. Marquemos
feature-preprocessingen un directorio aparte:Esto crea un nuevo directorio llamado
ml-pipeline-preprocessingun nivel por encima de tu ubicación actual, marca allí la ramafeature-preprocessingy lo enlaza a tu repositorio existente.Git confirma la creación:
Para trabajo totalmente nuevo, crea a la vez la rama y el worktree:
La opción
-bcrea una rama nueva llamadafeature-visualizationy la marca en el nuevo worktree.Explorar la estructura de worktree
Con el worktree creado, ahora tienes varios directorios en tu sistema de archivos. Para verlos todos:
La primera línea muestra tu worktree principal —el directorio original que contiene la carpeta
.git—. La segunda línea muestra tu worktree enlazado. Ambas muestran el hash del commit actual y la rama marcada.Cada directorio de worktree funciona como un repositorio Git completo. Puedes entrar, editar archivos, ejecutar
git statusy hacer commits. Los worktrees enlazados no contienen un directorio.gitcompleto, sino un archivo.gitque apunta al repositorio principal. Dentro del.gitprincipal, una carpetaworktreesalmacena metadatos de cada worktree enlazado.Trabajar en un worktree
Ve al worktree de
feature-preprocessingy haz un commit:El commit se realiza con normalidad:
Vuelve a tu worktree principal y revisa el historial:
Aparece tu nuevo commit:
Fíjate en cómo el commit aparece de inmediato en ambas ubicaciones sin comandos adicionales.
Casos de uso de Git worktree
Ahora que ya sabes crear y trabajar con worktrees, veamos escenarios prácticos donde resuelven problemas reales de desarrollo.
Flujo de trabajo para revisión de código
Tu compañero necesita feedback en su PR. En lugar de hacer stash y cambiar de rama, crea un directorio aparte para la revisión:
Prueba los cambios y deja tus comentarios. Cuando termines:
Tu trabajo original permanece intacto. Sin stashes ni cambios de contexto. Para más estrategias de revisiones efectivas, echa un vistazo a la guía de buenas prácticas de código de DataCamp.
Hotfixes de emergencia
Sin worktrees:
Con worktrees:
Corrige y despliega:
En segundos vuelves a tu refactorización, con todos los archivos exactamente como los dejaste.
Desarrollo de funcionalidades en paralelo
Estás implementando métricas personalizadas y un nuevo data loader: dos funcionalidades independientes. Crea un worktree para cada una:
Tu sistema de archivos ahora se ve así:
Ejecuta ambas funcionalidades en paralelo, cada una en su terminal:
Ambos procesos se ejecutan a la vez sin conflictos. Cuando una funcionalidad esté lista, fusiónala y elimina el worktree:
Gestionar y limpiar worktrees
Listar worktrees
Para ver todos los worktrees de un repositorio:
Cada línea muestra la ruta del directorio, el hash del commit actual y la rama marcada. La primera entrada es siempre tu worktree principal (que contiene la carpeta
.git) y el resto son worktrees enlazados.Para scripting o navegación rápida, extrae solo las rutas:
Eliminar worktrees
Cuando termines de usar un worktree, elimínalo correctamente:
Git protege contra la pérdida de datos. Si tienes cambios sin confirmar:
Fuerza la eliminación si estás seguro:
Si un worktree está bloqueado, usa
--forcedos veces:Si borraste un worktree a mano (
rm -rfo desde el explorador), Git lo seguirá rastreando internamente. Limpia las referencias obsoletas:Previsualiza qué se va a limpiar:
Buenas prácticas y errores comunes
Veamos cómo sacarle el máximo partido a los worktrees y cómo evitar errores habituales.
Organización de worktrees
Dónde colocas los worktrees importa. La mayoría los pone como directorios hermanos del repositorio principal:
Esta estructura mantiene todo junto y hace que las rutas sean previsibles. El patrón
nombreproyecto-nombreramate dice exactamente qué hay en cada directorio.Algunos prefieren una carpeta dedicada:
Elige un enfoque y úsalo de forma consistente. Nombres descriptivos como
ml-pipeline-user-authenticationhacen que los directorios se expliquen solos, mientras que nombres genéricos comoml-pipeline-tempoml-pipeline-2te obligan a mirar dentro. Trata los worktrees como temporales: créalos para una tarea concreta y elimínalos al terminar.Errores comunes
Misma rama en varios worktrees
Git impide marcar la misma rama en dos worktrees:
Esta protección existe porque podrías hacer commits en conflicto. Si necesitas el mismo código en dos sitios, crea una rama nueva.
Worktrees olvidados y espacio en disco
Cada worktree permanece en tu disco hasta que lo eliminas explícitamente. Los worktrees viejos se acumulan; hay proyectos con 15 o más worktrees olvidados que consumen gigas.
Cada worktree contiene una copia completa de los archivos del repositorio. Un repositorio de 500 MB con 5 worktrees ocupa 2,5 GB. Elimina worktrees cuando acabes:
Anidar worktrees
No crees un worktree dentro del directorio de otro worktree. Git lo permite, pero genera estructuras confusas y complica la limpieza.
Optimización del flujo de trabajo
Los alias de shell ahorran tiempo si creas worktrees a menudo:
Para configuraciones más complejas, escribe una función que cree un worktree y configure tu entorno de desarrollo en un paso:
La variable
${PWD##*/}extrae el nombre de tu directorio actual. Al ejecutarwt feature-loggingdesdeml-pipelinese creaml-pipeline-feature-logging, entras en él y se configura un entorno virtual de Python con dependencias.Crear un worktree pasa a ser un solo comando:
Adáptalo a tu lenguaje: sustituye la configuración de Python por
bundle installen Ruby,cargo builden Rust onpm installen Node.js.Tu editor o IDE funciona con worktrees sin configuración especial. Cada worktree es solo un directorio, así que ábrelo como cualquier proyecto. La mayoría de editores modernos permiten abrir varias raíces a la vez: puedes tener tres worktrees en una ventana y cambiar entre ellos desde la barra lateral.
Worktrees avanzados: desarrollo en paralelo con ayuda de IA
Si usas asistentes de programación con IA, los worktrees desbloquean un potente flujo de trabajo en paralelo. Este enfoque ha ganado tracción entre desarrolladores y equipos en 2024–2025.
Crea worktrees separados para tareas distintas:
Abre un panel de terminal para cada worktree y lanza tu asistente de IA:
Cada instancia de IA trabaja en una funcionalidad distinta sin interferencias. Hay equipos que informan de completar trabajo en horas que antes llevaba días. Por ejemplo, incident.io ejecuta 4–5 agentes de Claude Code en paralelo usando este patrón. En un caso, Claude estimó una mejora de UI en 2 horas y la acabó en 10 minutos.
Aspectos a tener en cuenta:
Funciona bien para funcionalidades grandes e independientes (30+ minutos cada una) donde el trabajo no toca los mismos archivos y tienes cuota de API suficiente. Evítalo para bugs rápidos, funcionalidades muy acopladas o cuando estés cerca de los límites de la API.
Conclusión
Recuerda el escenario del principio: un compañero necesita una revisión de PR mientras tú estás a mitad de una funcionalidad. Ya sabes la solución:
git worktree add ../ml-pipeline-review pr/branch-namey luegocdpara empezar a revisar. Tu trabajo de funcionalidad se mantiene intacto. Sin stash, sin commits a medias, sin sobrecarga mental para reconstruir el contexto al volver. Dos directorios, dos ramas, cero fricción.Git worktree no añade complejidad a tu flujo: la elimina. Cada worktree es solo un directorio con una rama marcada. Pero esa sencillez desbloquea algo potente: la capacidad de cambiar de contexto al instante sin la carga cognitiva de hacer stash, cambiar de rama y reconstruir tu modelo mental.
Cuando necesites integrar worktrees con la colaboración en equipo —como pull requests y revisiones de código—, el itinerario de habilidades GitHub Foundations de DataCamp cubre las prácticas esenciales para trabajar eficazmente con equipos distribuidos.