Tech
10 Sep 2025  -  

Git Worktree: cómo trabajar en varias ramas de un mismo proyecto al mismo tiempo

La diferencia de Git Worktree

Según Fernando Fernández, Programador Líder en Pigmalion Software, Git worktree marca la diferencia porque permite trabajar en varias ramas de un mismo proyecto al mismo tiempo, sin enredos ni duplicaciones. Esto significa más agilidad: podés avanzar en una nueva funcionalidad, revisar un cambio pendiente o corregir un error urgente sin frenar lo que ya estabas haciendo. En pocas palabras, te da libertad para moverte en paralelo y mantener todo tu trabajo ordenado y simple.

Git Worktree

Fernando Fernández, Desarrollador Líder en Pigmalion Software

El problema de cambiar de rama

En nuestra labor como desarrolladores es común tener que encarar más de una tarea a la vez, ya sea porque se descubre una falla que hay que solucionar lo antes posible, porque el cliente considera que algo tiene más prioridad dentro del sprint, o porque tenemos que probar lo realizado por otro miembro del equipo.

Cuando esto sucede, tenemos que dejar lo que estamos haciendo en una rama de git para cambiar a otra rama; lo que implica la posibilidad de perder nuestro trabajo si no tomamos el recaudo de guardarlo previamente. Para evitar esto, podemos guardarlo en un commit indicando que está en desarrollo; crear un parche o guardarlos con git stash. Ninguna de estas soluciones es segura ni cómoda.

¿Qué aporta Git Worktree?

Para estos casos, git posee un comando que nos permite trabajar con varios worktrees al mismo tiempo en el un solo repositorio. Es decir, que podemos tener varios directorios con sus respectivos worktrees y HEADs, lo que nos permite trabajar con ramas distintas concurrentemente. Podemos tener abiertos dos worktree del mismo repositorio en un IDE.

Esto resulta especialmente útil en proyectos grandes, donde la sincronización de ramas y la revisión de código son tareas frecuentes. Worktree permite mantener entornos aislados y confiables, lo que reduce errores al cambiar de contexto.

¿Cómo crear un worktree?

Para crear un worktree usamos el comando:

git worktree add RUTA RAMA

Es importante tener en cuenta que RUTA debe estar fuera de un repositorio git. Lo más común es que los worktree convivan en un directorio separado del repositorio.

Si el repositorio se encuentra en:

/home/usuario/git/proyecto

Los worktrees irían en:

/home/usuario/git/proyecto.worktrees

Por ejemplo:

git worktree add ../proyecto.worktrees/otra-rama otra-rama

Crear una nueva rama con worktree

Si la rama no existe la podemos crear agregando el parámetro -b antes del nombre de la rama:

git worktree add ../proyecto.worktrees/nueva-feature -b nueva-feature

La rama creada está basada en el branch actual. Es posible indicar la rama en la que se va a basar la nueva rama:

git worktree add ../proyecto.worktrees/nueva-feature -b nueva-feature rama-base

Otros comandos útiles

  • Listar los worktrees creados:
git worktree list
  • Eliminar un worktree:
git worktree remove

Automatizar tareas con hooks

Lo habitual es que en nuestro repositorio tengamos archivos de configuración o tengamos que instalar dependencias. Por defecto, cuando creamos un worktree tenemos que copiar los archivos de configuración o instalar las dependencias a mano.

Es posible crear un hook de git para que lo haga automáticamente. Tenemos que crear el archivo .git/hooks/post-checkout.

Ejemplo:

#!/bin/bash
if [[ "$1" == "0000000000000000000000000000000000000000" ]]; then
  BASE_DIR="$(cat .git | cut -d " " -f 2 | rev | cut -d '/' -f 4- | rev)"
  FILES_TO_COPY=()
  for FILE in "${FILES_TO_COPY[@]}"; do
    cp "$BASE_DIR/$FILE" "$(pwd)/$FILE"
  done
  # Acá se pueden agregar comandos para ejecutar en el worktree. Por ejemplo para instalar dependencias
fi

Automatizar la instalación de dependencias con hooks es una práctica recomendada en equipos grandes. Garantiza que cada rama tenga siempre el entorno correcto, evitando inconsistencias entre worktrees.

Extensiones para IDEs

Existen plugins o extensiones para integrar los worktree dentro de los IDE:

  • Git Worktree Manager para Visual Studio Code.
  • Git_worktree_manage para IntelliJ IDEA.

También existen scripts de terceros y gestores visuales que simplifican la creación y eliminación de worktrees, pensados para equipos que usan Git en entornos corporativos.

Esta funcionalidad de git es poco conocida pero es muy útil. Espero que la puedan integrar en su flujo de trabajo para mejorarlo.

 

Volver a notas

Suscribite a nuestro newsletter

Descubre más desde Pigmalion Software

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo