Lo esencial
Imagina que tienes dos escritorios para un mismo proyecto: en el primero escribes el código principal y en el segundo experimentas. No se estorban entre sí, y los dos agentes trabajan al mismo tiempo. Eso son los Worktrees de Git (copias de trabajo paralelas de un repositorio).
Términos de la lección: git (sistema de control de versiones), worktree (copia de trabajo paralela de un repositorio), CI/CD (Continuous Integration/Delivery, integración y entrega continuas), GitHub Actions (sistema de automatización de GitHub), workflow (flujo de trabajo), agent (agente, un ejecutor autónomo).
Conceptos clave
- Git y GitHub: lo local frente a la nube
- Worktree = copias de trabajo paralelas de un mismo repositorio
- Dos agentes en dos ramas = desarrollo en paralelo sin conflictos
- Soporte integrado en Claude Code:
claude --worktree <nombre> - GitHub Actions y la automatización CI/CD (integración y entrega continuas)
Teoría
Git y GitHub: cuál es la diferencia
Git es un programa que vive en tu computadora. Registra todos los cambios en los archivos del proyecto y te permite:
- Volver a cualquier versión anterior
- Trabajar en varias ramas en paralelo
- Ver quién cambió qué y cuándo
GitHub es una plataforma en la nube donde se guardan repositorios de Git. Además de guardarlos, te da:
- Respaldo en la nube (si tu computadora se muere, el código se salva)
- Trabajo en equipo
- Pull Requests para revisar código
- GitHub Actions para automatizar
En resumen: Git es tu diario personal; GitHub es la caja fuerte del banco donde guardas una copia.
Ramas y Pull Requests
Una rama (branch) es una línea de desarrollo paralela. Creas una rama para trabajar en una función sin romper el código principal:
git checkout -b feature/payment-integration
# Ahora todos los cambios van a la rama feature/payment-integration
# La rama principal (main) queda intactaUn Pull Request (PR) es una propuesta para fusionar los cambios de una rama en la principal. Si trabajas solo, sirve como historial de decisiones. En un equipo, es el paso obligatorio de revisión de código.
Qué son los Git Worktrees
Normalmente tienes una sola copia de trabajo del repositorio. Los worktrees te permiten tener varias copias de trabajo a la vez, cada una en su propia rama.
Sin worktrees:
my-project/ ← una carpeta, una rama
src/
tests/¿Quieres cambiar a otra rama? Tienes que hacer git stash o git checkout, y pierdes el contexto de lo que estabas haciendo.
Con worktrees:
my-project/ ← rama principal (main)
src/
tests/
my-project-feature-A/ ← rama feature-A
src/
tests/
my-project-hotfix/ ← rama hotfix
src/
tests/Tres carpetas separadas, tres estados distintos del código, un solo repositorio por dentro.
Por qué importa con Claude Code
Cada instancia de Claude Code trabaja con los archivos de su propia carpeta. Abre Claude Code en my-project/ y trabaja con main. Ábrelo en my-project-feature-A/ y trabaja con feature-A.
Escenario de desarrollo en paralelo:
Agente 1 (en my-project/):
→ Escribe el flujo principal de procesamiento de pedidos
→ Integra la base de datos
→ Escribe las pruebas
Agente 2 (en my-project-feature-A/):
→ Al mismo tiempo desarrolla la interfaz para ver los pedidos
→ Crea los endpoints de la API
→ Documenta
Los dos trabajan AL MISMO TIEMPO, sin estorbarseEn lugar de "primero una cosa y luego la otra", trabajas en paralelo. En la práctica esto puede acortar bastante el tiempo de un proyecto.
Cómo crear y usar Worktrees
El camino más corto: la opción integrada de Claude Code. En las versiones actuales ya no hace falta crear el worktree a mano:
claude --worktree feature-authEl comando (en corto, -w) crea un worktree aislado en la carpeta .claude/worktrees/feature-auth/ sobre una rama nueva worktree-feature-auth y abre Claude ahí de inmediato. Ejecuta el mismo comando con otro nombre en otra terminal y tendrás una segunda sesión aislada. Otras cosas útiles:
- Agrega
.claude/worktrees/a.gitignorepara que las carpetas de worktree no aparezcan en el repositorio principal. - Un worktree es una copia limpia: los archivos secretos como
.envno se copian. Para que se copien solos, pon en la raíz del proyecto un archivo.worktreeinclude(con la misma sintaxis que.gitignore). - También puedes pedirle a Claude dentro de la sesión: "trabaja en un worktree". Un subagente también se puede aislar: en su archivo agrega
isolation: worktree(ver la lección Subagentes). - Al salir, Claude revisa si en el worktree hay trabajo sin guardar y te pregunta si lo conservas o lo borras.
- Necesitas un repositorio de git. Documentación: code.claude.com/docs/en/worktrees.
Abajo está lo mismo hecho a mano, con el propio git. Conviene saberlo para entender qué pasa por dentro.
Paso 1: crear el worktree
# En la carpeta principal del proyecto:
git worktree add ../my-project-feature-A feature-A
# Qué pasa:
# - Se crea la carpeta my-project-feature-A junto a la principal
# - Queda en la rama feature-A
# - Si la rama no existe, agrega -b: git worktree add -b feature-A ../my-project-feature-APaso 2: abrir Claude Code en cada carpeta
# Terminal 1:
cd my-project
claude
# Terminal 2 (ventana nueva):
cd my-project-feature-A
claudePaso 3: ver todos los worktrees activos
git worktree list
# Muestra:
# /path/to/my-project abc1234 [main]
# /path/to/my-project-feature-A def5678 [feature-A]Paso 4: borrar el worktree al terminar
git worktree remove my-project-feature-AGitHub Actions: automatización CI/CD
CI/CD (Continuous Integration / Continuous Deployment) es la ejecución automática de pruebas y del despliegue cada vez que cambia el código.
GitHub Actions te permite configurarlo sin servicios adicionales:
# .github/workflows/test.yml
name: Run Tests
on:
push:
branches: [main, feature-*]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
# las versiones de las acciones (@v4, @v5) se actualizan de vez en cuando: revisa la página de la acción en GitHub
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytestAhora, cada vez que haces push, GitHub ejecuta las pruebas automáticamente. Si las pruebas fallan, GitHub no deja fusionar los cambios en main (si activas la regla de protección de rama correspondiente).
Para Claude Code esto significa: el agente escribe el código, hace push a una rama, GitHub Actions ejecuta las pruebas y tú ves el resultado directo en el Pull Request, sin abrir la terminal.
Integración con Trigger.dev
Si tu proyecto usa Trigger.dev para sus flujos de trabajo, puedes configurar un despliegue automático (revisado con la documentación de Trigger.dev en octubre de 2026):
# .github/workflows/deploy.yml
name: Deploy to Trigger.dev
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy workflows
run: npx trigger.dev@latest deploy
env:
TRIGGER_ACCESS_TOKEN: ${{ secrets.TRIGGER_ACCESS_TOKEN }}Push a main → despliegue automático de los flujos en Trigger.dev. Nada de desplegar a mano.
Práctica
Tarea: poner a trabajar a dos agentes en paralelo con worktrees
Crea un repositorio nuevo o usa uno que ya tengas:
bash mkdir parallel-demo && cd parallel-demo git init echo "# Parallel Demo" > README.md git add . && git commit -m "Initial commit"Crea un worktree para la segunda rama:
bash git worktree add -b feature-backend ../parallel-demo-backendAbre dos terminales:
- Terminal 1:
cd parallel-demo && claude - Terminal 2:
cd parallel-demo-backend && claude
- Terminal 1:
Dale a cada agente una tarea distinta:
- Agente 1: "Crea un README con la descripción del proyecto y las instrucciones de instalación"
- Agente 2: "Crea un script básico de Python main.py con una función hello_world"
Observa cómo los dos trabajan al mismo tiempo
Al terminar, fusiona los cambios:
bash cd parallel-demo git merge feature-backend git worktree remove ../parallel-demo-backend
Errores comunes
1. Olvidar borrar el worktree después del merge Los worktrees acumulan carpetas en el disco. Después de fusionar la rama, bórralo siempre:
git worktree remove ../my-project-feature-A
# Revisa que no queden worktrees "colgados":
git worktree list2. Intentar abrir la misma rama en dos worktrees Git no permite tener la misma rama abierta en dos worktrees a la vez. Cada worktree = una rama distinta.
3. Editar archivos del worktree desde otro editor Si abriste el worktree en Claude Code, no edites los mismos archivos desde VS Code al mismo tiempo. Los conflictos están garantizados.
4. No crear la rama antes del worktree Si la rama todavía no existe, usa la opción -b:
git worktree add -b feature-new ../my-project-new5. Hacer merge sin revisar las pruebas Antes de fusionar desde un worktree, ejecuta las pruebas en las dos ramas. GitHub Actions lo automatiza con CI.
Herramientas y recursos
- Git Worktree: documentación oficial: git-scm.com/docs/git-worktree
- GitHub Actions: automatización CI/CD: docs.github.com/en/actions (gratis para repositorios públicos; para los privados hay un límite mensual gratuito de minutos; revisa los límites vigentes en la página de precios de GitHub)
- Claude Code y worktrees: code.claude.com/docs/en/worktrees
- GitHub CLI (
gh): manejo de Pull Requests y Actions desde la terminal: cli.github.com - Skill:
superpowers:using-git-worktrees: una guía más amplia de patrones con worktrees
Conclusiones clave
Un worktree no es magia. Son solo varias carpetas sobre un mismo repositorio. La fuerza está en que cada agente trabaja en su propia carpeta aislada, al mismo tiempo. GitHub Actions es tu departamento de control de calidad gratuito. Lo configuras una vez y las pruebas corren solas en cada push. El desarrollo en paralelo con agentes no es el futuro: lo tienes disponible hoy con
git worktree add.
Lecciones relacionadas
- Equipos de agentes: worktrees + subagentes = cada agente trabaja en su propio worktree en paralelo
- Headless y CI/CD: GitHub Actions ejecuta las pruebas automáticamente con cada push desde cualquier worktree
Qué sigue
→ Headless y CI/CD: cómo ejecutar Claude Code en escenarios automáticos, sin una persona
La marca se guarda solo en este navegador y no se envía a ningún sitio. Mi progreso