git worktree
Extraer varias ramas a la vez en carpetas separadas
El comando 'git worktree' da a un repositorio varias carpetas de trabajo. Cada carpeta tiene una rama distinta extraída, con sus propios archivos y área de preparación, mientras el historial se comparte. Es la alternativa al stash cuando debes cambiar de tarea: abre la rama urgente en otra carpeta y deja intacto tu trabajo en curso. Una rama solo puede estar extraída en una carpeta a la vez.
Sinopsis
git worktree add [-b <new-branch>] <path> [<commit-ish>]
git worktree list
git worktree remove <worktree>
git worktree pruneOpciones
Elegir la opción adecuada
Cambiar de tarea
Tres formas
| Comando | Tus ediciones | Carpetas |
|---|---|---|
git stash + switch | Apartadas y luego restauradas | Una |
git commit (WIP) + switch | En un commit temporal | Una |
git worktree add | Intacto | Dos |
Ejemplos
Rama nueva en una carpeta nueva
git worktree add ../hotfix -b hotfixCarpeta ../hotfix en una rama nueva.
Rama existente
git worktree add ../review feature/loginRevisar una rama sin dejar la tuya.
Listar
git worktree listCada carpeta con su rama.
Quitar
git worktree remove ../hotfixBorrar la carpeta extra.
Ejemplos de flujos de trabajo
git worktree add ../hotfix -b hotfix mainAbrir main en una carpeta nueva
cd ../hotfixArreglar, confirmar y subir allí
git worktree remove ../hotfixLimpiar al terminar
Solución de problemas
fatal: 'hotfix' is already used by worktree
Causa: Esa rama está extraída en otra carpeta
Trabaja en esa carpeta, o quita antes el worktree
Consejos y trampas
Buenas prácticas
- ✓Pon los worktrees junto a la carpeta principal (../nombre), no dentro.
Errores comunes
- ✗Borrar a mano una carpeta de worktree — usa git worktree remove (o prune después).
- ✗Intentar extraer la misma rama en dos carpetas.
Preguntas frecuentes
Sí: un repositorio, un historial; solo difieren los archivos extraídos.