Deepseek ArtifactsDeepseek Artifacts
Guía de worktrees

Worktrees de Claude Code: sesiones paralelas sin conflictos

Un comando le da a cada sesión de Claude Code su propia copia completa de tu repo. Aprende claude --worktree, la estructura de .claude/worktrees, el aislamiento por worktree de los subagentes, la limpieza al salir y dónde sigue ganando el git worktree add manual.

TL;DR

  • claude --worktree (forma corta -w) arranca tu sesión dentro de una copia nueva del repo en .claude/worktrees/<name>, con checkout en una rama llamada worktree-<name>.
  • Lanza más sesiones en otras terminales para trabajar en paralelo — cada sesión edita su propio directorio mientras comparte el mismo historial de Git y el mismo remoto.
  • Los subagentes también tienen worktrees: pídelo en lenguaje natural o añade isolation: worktree en el frontmatter de un .claude/agents/*.md para hacerlo permanente.
  • Al salir, los worktrees sin nombre y limpios se eliminan automáticamente y el trabajo en curso pregunta si conservarlo o eliminarlo; fusiona los resultados con un git merge normal de worktree-<name>.

Claude Code Worktrees in 7 Minutes

Canal: Developers Digest7:10

Ver

I'm using claude --worktree for everything now

Canal: Matt Pocock7:57

Ver

Worktrees — official documentation

Documentación oficial: code.claude.com/docs

Ver

Cada flag, ruta y comportamiento de limpieza de esta página está verificado contra la documentación oficial de worktrees; los videos de arriba son la fuente visual y de hechos, incluido el aviso de conservar o eliminar al salir y la trampa del push a main.

Las capturas se atribuyen a sus creadores con enlaces profundos a los minutos exactos. No se usan fotogramas con caras.

Usa los worktrees de Claude Code paso a paso

Parte 1 — Tu primera sesión aislada

  1. 1

    Prepara un repo Git con al menos un commit

    Los worktrees se ramifican de un historial existente, así que la función necesita un repositorio Git real. En una carpeta nueva ejecuta git init, crea un archivo (la demo solo ejecuta touch index.html) y haz un commit. Si te lo saltas, Claude Code no tendrá nada de donde ramificarse.

    Terminal running git init in a demo-app folder with Initialized empty Git repository output and touch index.html, the one-commit starting point Claude Code worktrees require
    git init más touch index.html — un solo commit es todo lo que la función de worktrees necesita antes de que claude --worktree funcione.Ver en 1:06
  2. 2

    Sabe qué es un worktree en realidad

    Un worktree de Git es un segundo directorio de trabajo con sus propios archivos y su propia rama en checkout que comparte el historial y el remoto del repositorio. A diferencia de cambiar de rama, aquí nada se guarda aparte: el checkout principal y cada worktree siguen usables a la vez, exactamente lo que necesitan los agentes paralelos.

    Worktrees diagram showing one Git repository fanning out into three folders labeled ../main, ../feature1 and ../feature2, each checked out on its own branch
    Un repositorio, muchas carpetas de trabajo: ../main, ../feature1 y ../feature2 están a la vez sobre su propia rama.Ver en 0:30
  3. 3

    Lanza Claude Code con --worktree

    Desde dentro del repo ejecuta claude --worktree (o la forma corta claude -w). Claude Code crea .claude/worktrees/<name>, genera un nombre como bright-tumbling-rabbit si no pasas uno y mete la sesión directamente en esa copia. En la app de escritorio eliges la opción de worktree al iniciar la sesión.

    Claude Code v2.1.50 welcome banner after launching claude --worktree in the demo-app repo, with the session working directory set to .claude/worktrees/bright-tumbling-rabbit
    El banner de bienvenida muestra que el directorio de trabajo de la sesión ya está dentro de .claude/worktrees — todo lo que venga ocurre en la copia.Ver en 1:22
  4. 4

    Abre una segunda sesión para tu segunda tarea

    Ejecuta claude --worktree de nuevo en otra terminal. Sin nombre obtienes otro worktree independiente; pasa el mismo nombre dos veces para reabrir el mismo. Dos agentes ya pueden editar el mismo proyecto a la vez porque cada uno solo ve su propio directorio.

Parte 2 — Dónde viven tus archivos y comandos

  1. 5

    Inspecciona la copia completa bajo .claude/worktrees

    Abre la carpeta en tu explorador de archivos: cada worktree es un checkout completo con su propio index.html, su propio .claude/settings.local.json y su propio archivo git, mientras la pesada base de objetos sigue compartida en el .git principal. Por eso crear otra copia es casi gratis.

    macOS Finder window listing .claude/worktrees with clever-munching-toast and spicy-napping-otter copies behind two browser tabs, each worktree holding its own git folder and index.html
    Dos worktrees en el disco — clever-munching-toast y spicy-napping-otter — cada uno una copia completa del proyecto con su propia carpeta git y su index.html.Ver en 1:50
  2. 6

    Confirma que los comandos se quedan en el worktree

    Cuando la primera sesión abre su página en el navegador, el aviso de permiso muestra que la ruta apunta a .claude/worktrees/clever-munching-toast — no a tu checkout principal. Claude Code también impide que los subagentes editen el checkout principal directamente, y una de esas comprobaciones de aislamiento no se puede desactivar.

    Claude Code permission prompt for an open command targeting .claude/worktrees/clever-munching-toast/index.html, showing the session working only inside its own worktree copy
    El diálogo de aprobación nombra la ruta exacta del worktree, la prueba de que la sesión uno solo toca su propia copia del proyecto.Ver en 1:42
  3. 7

    Nombra worktrees o ramifica desde PRs (opcional)

    claude --worktree feature-auth crea un worktree con nombre predecible, y ejecutar el mismo nombre otra vez lo reabre en vez de crear un duplicado. También puedes pasar un número de PR entre comillas (claude --worktree "#1234") o una URL de PR de GitHub/GitLab para obtener un worktree de ese pull request bajo .claude/worktrees/pr-<number>.

Parte 3 — Subagentes en paralelo y limpieza

  1. 8

    Pide subagentes paralelos con aislamiento de worktree

    El aislamiento escala más allá de las terminales. Un solo prompt — "lanza cinco subagentes distintos para crear cinco variantes y aprovecha el aislamiento de git worktree" — hace que Claude Code genere agentes Task, cada uno en su propio worktree aislado, trabajando sobre el mismo repo a la vez sin colisiones.

    Claude Code spawning five Task agents in parallel after a single prompt requesting creative SaaS landing page variations with git worktree isolation
    Cinco agentes Task lanzándose en paralelo, cada uno anunciado como trabajando en su propio git worktree aislado.Ver en 2:42
  2. 9

    Observa cómo cada agente corre en su carril

    La lista de tareas muestra las cinco variantes con usos de herramientas y conteos de tokens, así que ves el progreso sin abrir cinco terminales. Las transcripciones de los subagentes se quedan fuera del contexto del hilo principal, lo que mantiene pequeña la sesión orquestadora mientras los agentes hacen el trabajo pesado.

    Claude Code task list with all five SaaS landing page subagents mid-run, each labeled with tool uses and token counts while isolated in its own worktree
    Los cinco subagentes a mitad de ejecución — la Variación 1 ya terminada con 50,3k tokens mientras los demás leen archivos en sus propios worktrees.Ver en 3:42
  3. 10

    Compara las variantes y fusiona la ganadora

    Cuando los agentes terminan, Claude Code lista cada variante con su ruta bajo .claude/worktrees/agent-<id>/, para que las abras en paralelo en el navegador. Publica la que te guste con un git merge normal de su rama de worktree (o con un PR) — los conflictos, si los hay, se resuelven como en cualquier merge de Git.

    Claude Code summary listing five landing page variations with their .claude/worktrees/agent-prefixed index.html paths next to a rendered dark FlowSync preview
    El resumen nombra cada variante y su ruta en .claude/worktrees, con un resultado renderizado abierto junto a la lista.Ver en 4:22
  4. 11

    Guarda el aislamiento como subagente reutilizable

    Para hacer permanente el aislamiento por worktree, solo pídelo: "crea un subagente desarrollador front-end, usa el modelo Haiku y haz que aproveche el aislamiento de worktree". Claude Code investiga su propia documentación de agentes y te escribe un archivo nuevo bajo .claude/agents/.

    Claude Code accepting a natural-language request to create a front-end developer subagent with Haiku that leverages work tree isolation
    El lenguaje natural basta — Claude Code consulta su propia documentación sobre el formato de agentes personalizados antes de escribir el archivo.Ver en 5:42
  5. 12

    Comprueba el isolation: worktree del frontmatter

    El frontend-dev.md generado lleva name, description, model: haiku, una lista blanca de tools y — la línea nueva — isolation: worktree. Cada ejecución futura de este subagente ocurre ahora en un worktree temporal que se elimina automáticamente si termina sin cambios.

    Claude Code writing the .claude/agents/frontend-dev.md subagent file with isolation: worktree in its YAML frontmatter so every future run gets its own worktree
    La línea 8 del frontmatter — isolation: worktree — es lo que da a cada ejecución de este subagente su propio worktree.Ver en 6:42
  6. 13

    Fusiona y deja que Claude limpie

    Al cerrar una sesión, Claude Code inspecciona el worktree: los worktrees sin nombre y limpios se eliminan automáticamente y cualquier cosa con trabajo pregunta si conservarla o eliminarla — al conservar imprime el comando claude --worktree <name> --resume para más tarde. Las ejecuciones headless con -p nunca limpian; esas elimínalas con git worktree remove.

Worktrees de Claude Code vs git worktree add manual

Los worktrees llevan años en Git — lo nuevo es que Claude Code gestiona todo su ciclo de vida. Las diferencias que importan:

  • 1Creación: a mano ejecutas git worktree add ../project-feature -b feature, haces cd y arrancas Claude. Con claude --worktree la sesión aterriza en .claude/worktrees/<name> en un paso, con nombre tuyo o automático.
  • 2Commit base: worktree.baseRef controla el punto de partida — fresh (por defecto) ramifica desde la rama por defecto del remoto; head incluye tus commits locales aún sin subir. El flag no puede apuntar a una rama concreta; la documentación dice que uses el git worktree add manual para eso.
  • 3Dotfiles: un archivo .worktreeinclude en la raíz del proyecto copia los archivos ignorados por git, como .env, en cada worktree nuevo. Los worktrees hechos a mano no reciben ese tratamiento.
  • 4Limpieza: Claude Code inspecciona el worktree al salir, elimina automáticamente los limpios sin nombre, pregunta antes de tocar el trabajo en curso y barre periódicamente los worktrees de subagentes abandonados. Los worktrees manuales son responsabilidad completamente tuya.
  • 5Barandillas: las comprobaciones de aislamiento impiden que los subagentes editen el checkout principal, y al reanudar una sesión vuelves a su worktree. El git worktree add clásico no tiene red de seguridad equivalente.

Por debajo sigue siendo Git de toda la vida. El panel de control de código fuente de VS Code lista cada worktree con sus cambios, los merges son git merges normales y los worktrees hechos a mano y los de Claude coexisten en el mismo repositorio — elige la herramienta según la tarea.

Cuando un worktree no se comporta

La mayoría de los tropiezos son fundamentos de Git asomando, no bugs de la función. Estos cinco cubren casi todos los bordes ásperos que encontrarás:

  • 1El push aterriza en main. Una rama de worktree nueva sigue a la rama por defecto de origin, así que un git push sin calificar puede apuntar a main. Haz push explícito con git push origin worktree-<name> y mantén main protegida.
  • 2Faltan archivos o herramientas. Los archivos ignorados por git (.env, carpetas vendor) y los filtros locales del repo como LFS no se propagan a un worktree nuevo. Lístalos en .worktreeinclude, o ejecuta git lfs pull y tus comandos de configuración dentro del worktree.
  • 3El arranque falla con un error de confianza. En un directorio no confiable claude --worktree sale con un error que te pide aceptar primero el workspace — apruébalo y reintenta. (Las ejecuciones no interactivas con -p se saltan la comprobación.)
  • 4Dos worktrees chocan en el merge. Si ambas tareas editan el mismo archivo — rutas, una barra lateral, package.json — resolverás conflictos al fusionar, como en cualquier flujo de Git. Los worktrees eliminan las colisiones a mitad de ejecución, no las intenciones solapadas.
  • 5Worktrees huérfanos tras ejecuciones headless. Las ejecuciones con -p nunca limpian tras de sí; bórralos a mano con git worktree remove (ejecuta antes git worktree unlock si alguno está bloqueado).

Borrar un worktree bajo los pies de una sesión tampoco es fatal: la próxima reanudación cae en el directorio de arranque y el vínculo se limpia. Nada más se rompe en la sesión.

FAQ

Guías relacionadas de Claude Code