Sinopsis
git worktree add <path> [<branch>]
git worktree list
git worktree remove <path>
git worktree prune
Descripción
El comando git worktree te permite tener múltiples árboles de trabajo conectados a un único repositorio Git. Cada worktree puede tener un branch diferente checkeado, así puedes trabajar en varias cosas simultáneamente sin stash o cambio de branch constante.
Cada worktree comparte la base de datos de objetos del repo principal pero tiene su propio HEAD, index y árbol de trabajo. Usa git worktree add <path> <branch> para crear uno nuevo y git worktree remove <path> para limpiarlo.
En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Subcomando | Descripción |
|---|---|
add <path> [<branch>] | Create a new worktree. |
add -b <new> <path> [<start>] | Create new branch + worktree in one step. |
list | Show all worktrees. |
remove <path> | Delete a worktree's directory and metadata. |
prune | Remove metadata for worktrees whose path is gone. |
lock / unlock | Prevent or allow pruning. |
move <old> <new> | Relocate a worktree. |
Ejemplos
git worktree add ../project-hotfix release/1.4
# Check out release/1.4 in a sibling directory
git worktree add -b experiment ../project-experiment
# Create a new branch and worktree
git worktree list
# Display all worktrees
git worktree remove ../project-hotfix
# Tear down when finished
Errores comunes
You cannot have the same branch checked out in two worktrees simultaneously — Git refuses. Use --detach if you only need the contents. Forgetting to worktree remove leaves stale metadata; git worktree prune cleans up.
Comandos relacionados
git switch, git branch, git clone, git submodule