Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Git y GitHubNivel: Avanzado14 min de lección

Git Worktree: Cómo Trabajar en Múltiples Ramas a la Vez sin Clonar de Nuevo

El secreto para saltar a un hotfix urgente de producción sin hacer git stash, sin esperar a que termine npm install y sin perder tu contexto.

Git Worktree: Cómo Trabajar en Múltiples Ramas a la Vez sin Clonar de Nuevo
AROS STUDENT
E
Equipo de Ingeniería Git ArostikEspecialistas en Productividad y Control de Versiones · Actualizado el 25 sep 2026
¿Qué es Git Worktree y Qué Problema Soluciona?

Imagina que estás en medio de una tarea colosal: llevas tres días programando una función compleja en tu rama `feature/nueva-pasarela`. Tienes 15 archivos modificados a medio terminar, el servidor de desarrollo encendido y el compilador procesando código. De repente, suena la alarma: producción se cayó por un fallo crítico y tu líder técnico te pide solucionar un hotfix en la rama `main` en los próximos 10 minutos. En el flujo tradicional tendrías que ejecutar `git stash`, cambiar de rama con `git checkout main`, volver a correr `npm install` (esperando 3 minutos mientras se descargan librerías distintas), arreglar el fallo, volver a cambiar de rama con `git checkout feature/...`, volver a correr `npm install` y recuperar tus cambios con `git stash pop` rogando que no haya conflictos. **Git Worktree** es una característica nativa de Git que te permite tener **múltiples carpetas de trabajo físicas independientes conectadas al mismo repositorio**. Cada carpeta tiene abierta una rama diferente simultáneamente, compartiendo la misma base de datos `.git` interna sin clonar el proyecto de nuevo ni duplicar espacio de almacenamiento.

¿Por Qué Worktree Supera por Completo a Git Stash?
Ventajas y Beneficios:
  • ✓Cero Interrupciones de Contexto: Deja tu rama actual corriendo intacta en una ventana de tu editor y abre la rama del hotfix en una ventana separada en 2 segundos.
  • ✓Ahorro Masivo de Espacio en Disco: A diferencia de clonar el proyecto dos veces (lo que duplicaría gigabytes de historial en `.git`), los worktrees comparten el mismo almacén de objetos.
  • ✓Pruebas y Comparaciones en Paralelo: Puedes correr el servidor frontend de la versión vieja en el puerto 3000 y el de la versión nueva en el puerto 3001 al mismo tiempo para comparar visualmente.
Problemas que resuelve:
  • •Elimina el riesgo de perder trabajo a medio hacer por un mal manejo de `git stash pop`.
  • •Evita la dolorosa espera de reinstalar dependencias `node_modules` cada vez que cambias entre ramas dispares.
  • •Permite revisar Pull Requests de compañeros en una carpeta dedicada sin tocar tu código actual.
El Mismo Almacén con Dos Mesas de Trabajo Separadas

Imagina que eres un pintor que está restaurando un cuadro al óleo gigante en su caballete principal (tu rama feature). Tienes los tubos de pintura abiertos, los pinceles humedecidos y las mezclas de colores frescas sobre la mesa. Si un cliente llega a pedirte que firmes una copia urgente de un cuadro antiguo, no guardas todas tus pinturas en los cajones, limpias la mesa con solvente y desmontas el caballete para firmar un papel durante 2 minutos. En su lugar, caminas a la mesa secundaria del taller (un nuevo Worktree). El almacén de pinturas y tubos de reserva en el armario del fondo es el mismo (la base de datos `.git`), pero la segunda mesa tiene su propio espacio libre para trabajar de inmediato sin mover un solo milímetro de tu caballete principal.

Conexión con la Tecnología:La carpeta principal conserva la base de datos `.git`. Cada worktree adicional es simplemente una carpeta con un archivo de texto `.git` diminuto que apunta a la base de datos común.

Explicación Paso a Paso del Tema

1

Crear un Nuevo Worktree para un Hotfix Urgente

Usa el comando `git worktree add` indicando la ruta de la nueva carpeta y la rama que deseas abrir en ella.

Si la rama no existe, puedes crearla al instante con la bandera `-b`.

Comando de Terminal / Código
git worktree add ../mi-proyecto-hotfix -b hotfix/arreglo-login main
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
worktree addComandoCrea una nueva carpeta de trabajo física vinculada al repositorio actual.
../mi-proyecto-hotfixRutaUbicación en el disco donde se montarán los archivos de la nueva rama.
-b hotfix/arreglo-loginNueva RamaCrea la rama basada en main y hace checkout directo en la nueva carpeta.
Consejo Profesional:

Ahora puedes abrir esa nueva carpeta en otra ventana de VS Code con `code ../mi-proyecto-hotfix` y trabajar en paralelo.

2

Listar los Worktrees Activos en tu Sistema

Para ver qué carpetas de trabajo tienes abiertas y a qué rama está vinculada cada una, usa `git worktree list`.

Verás el directorio principal y todos los directorios secundarios con sus respectivos commits.

Comando de Terminal / Código
git worktree list
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
worktree listComandoMuestra rutas absolutas, hashes de commit y nombres de rama de cada worktree activo.
Error Común a Evitar:

Intentar hacer checkout a la misma rama en dos worktrees al mismo tiempo: Git lo prohíbe explícitamente para evitar que dos carpetas corrompan el mismo historial.

3

Eliminar el Worktree una Vez Terminado el Trabajo

Una vez que hiciste commit, subiste los cambios a GitHub y fusionaste el hotfix, elimina la carpeta de trabajo temporal.

El comando `git worktree remove` borra los archivos y limpia las referencias internas.

Comando de Terminal / Código
git worktree remove ../mi-proyecto-hotfix
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
worktree removeComandoElimina el directorio de trabajo del disco y desvincula la referencia en .git/worktrees/.
Consejo Profesional:

Si borraste la carpeta manualmente con el explorador de archivos de Windows o `rm -rf`, ejecuta `git worktree prune` para que Git limpie las referencias huérfanas.

Casos Prácticos Reales en Producción

Situaciones de ingeniería reales sin mención de presupuestos ficticios.

1La Revisión Simultánea de un Pull Request de 100 Archivos

Escenario Real:

Un ingeniero senior estaba programando una refactorización de 4 días. Un compañero le pidió revisar con urgencia un Pull Request crítico antes de un deploy a producción.

Solución de Ingeniería Aplicada:

En lugar de hacer stash de sus 4 días de trabajo a medio compilar, el ingeniero creó un worktree en `/tmp/pr-review`, descargó la rama del compañero, corrió los tests en paralelo y aprobó el Pull Request en 10 minutos sin tocar su ventana de desarrollo.

Fichas Nemotécnicas de Conceptos Clave

Glosario rápido para recordar los términos fundamentales de la lección.

Git Worktree

Capacidad de Git para vincular múltiples carpetas de trabajo con ramas independientes a un único almacén de objetos .git.

Detached Worktree

Carpeta de trabajo secundaria que apunta a un commit específico o tag en lugar de a una rama mutable.

git worktree prune

Comando de mantenimiento que limpia los registros internos de worktrees cuyas carpetas físicas fueron eliminadas del disco.

Autoevaluación Rápida3 preguntas

Git Worktree: Cómo Trabajar en Múltiples Ramas a la Vez sin Clonar de Nuevo

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Cuál es la principal ventaja de usar 'git worktree add' en lugar de clonar el proyecto entero en una nueva carpeta?

2

¿Qué ocurre si intentas abrir la misma rama en dos carpetas de worktree al mismo tiempo?

3

¿Cuál es el comando correcto para eliminar una carpeta de trabajo secundaria una vez que terminaste el hotfix?

Preguntas Frecuentes (FAQ)

¿Cuántos worktrees puedo tener creados al mismo tiempo?

No hay un límite práctico estricto en Git; puedes tener 5 o 10 carpetas de trabajo activas simultáneamente en tu disco duro si tienes espacio y memoria suficiente para tus editores.

¿Los cambios hechos en un worktree se ven en los demás inmediatamente?

Los archivos modificados sin commitear solo existen en la carpeta física de ese worktree. Pero en el instante en que haces `git commit`, ese commit ya está disponible en la base de datos común y puede ser visto o fusionado por cualquier otro worktree del proyecto.

Temas relacionados:#Git#Worktree#Productividad#Desarrollo#Terminal