Cómo uso git worktrees para trabajo concurrente
Posted on Wed 23 July 2025 in Programación
Aleksey Kladov comparte su enfoque único para usar git worktrees, que va más allá del simple cambio de ramas y se convierte en una metodología completa para el trabajo concurrente.
La filosofía central
"Git no es un sistema de control de versiones, Git es una caja de herramientas para construir un VCS"
Esta perspectiva cambia completamente cómo pensamos sobre git. En lugar de limitarnos a las funcionalidades básicas, podemos crear nuestro propio flujo de trabajo optimizado.
Los 5 worktrees especializados
El autor mantiene 5 worktrees, cada uno con un propósito específico:
- main - Snapshot de solo lectura - Reflejo limpio del main remoto - Referencia para comparaciones - Nunca se modifica localmente
- work - Espacio de trabajo principal - Desarrollo activo día a día - Commits frecuentes con mensajes mínimos - HEAD desacoplado para máxima flexibilidad
- review - Dedicado a revisiones de código - Contexto limpio para analizar PRs - Sin interferir con el trabajo en curso
- fuzz - Pruebas de larga duración - Fuzzing y tests que duran horas - Corre en paralelo sin bloquear el desarrollo
- scratch - Tareas rápidas no relacionadas - Experimentos - Fixes urgentes - Investigaciones puntuales
# Estructura típica de directorios
~/projects/my-project/
├── main/ # worktree principal
├── work/ # desarrollo activo
├── review/ # revisiones
├── fuzz/ # testing
└── scratch/ # experimentos
Ventajas del enfoque
- Trabajo verdaderamente concurrente
- Múltiples actividades de codificación simultáneas
- Sin necesidad de stash o branch switching complejo
- Separación limpia de contextos
- Flujo de trabajo sin fricción
- Cambio instantáneo entre tareas
- Commits frecuentes sin presión por mensajes perfectos
- Experimentación libre en HEAD desacoplado
- Paralelización real
- Fuzzing corriendo mientras desarrollas
- Reviews sin interrumpir el trabajo principal
- Tests en background sin bloqueos
Técnicas avanzadas
HEAD desacoplado estratégico
# En el worktree 'work', trabajar sin rama
git checkout --detach HEAD
# Commit frecuente, reorganizar después
git commit -m "wip"
Scripts personalizados para operaciones comunes
# Script para crear/cambiar worktrees rápidamente
#!/bin/bash
git worktree add "../$1" "$2"
cd "../$1"
Flujo de integración
# Desde el worktree 'work'
git log --oneline # revisar commits
git reset HEAD~5 # deshacer commits temporales
git add -p # seleccionar cambios
git commit # commit final limpio
Lecciones clave
- Git es flexible: No hay "una forma correcta" de usar git
- Automatiza lo repetitivo: Scripts personalizados para operaciones comunes
- Separa contextos: Cada tipo de trabajo merece su propio espacio
- Commits baratos: Commitea frecuentemente, organiza después
Este enfoque transforma git de una herramienta de versionado en una plataforma completa de gestión de flujo de trabajo, maximizando la productividad a través del trabajo verdaderamente concurrente.
Artículo original: How I Use Git Worktrees