Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿Git dice que la rama ya está en otro worktree? Demuestra el propietario antes de podar o forzar

Lista todos los worktrees, conserva trabajo sin commit o push y distingue un propietario vivo de una ruta movida, sin montar o ausente antes de remove, repair, prune, detach u otra rama.

Ilustración original de un registro de propietarios de Git worktree.
Ilustración original de Watch at Ease: lista, inspecciona y clasifica al propietario registrado. Watch at Ease

Git impide extraer la misma rama en varios worktrees porque ambos directorios moverían la misma referencia. La ruta del error prueba un propietario registrado; no autoriza borrarla.

Empieza con un inventario porcelain y revisa el árbol nombrado. prune es para directorios ausentes, repair para enlaces movidos y remove para retirar deliberadamente un worktree.

1. Inventaría propietarios registrados

Ejecuta git worktree list --porcelain desde un árbol sano y registra rutas, HEAD, rama, razón de bloqueo y marca prunable. Resuelve la ruta exacta antes de tocar .git/worktrees.

Registra el comando fallido y si la herramienta ya completó la acción remota. Un PR puede estar fusionado aunque la limpieza local choque con la protección.

2. Inspecciona ruta y trabajo

Si el directorio existe, ejecuta status e inspecciona commits no alcanzables desde base o remoto. Conserva parches, archivos no seguidos e IDs antes de quitarlo.

No deduzcas seguridad de nombres como temp, agent o build. Un árbol bloqueado o viejo puede contener trabajo no publicado o estar temporalmente sin montar.

3. Clasifica vivo, movido, sin montar o ausente

El propietario vivo debe seguir moviendo esa rama. Un directorio movido externamente requiere repair; una ruta portátil o de red puede estar bloqueada y temporalmente ausente.

Clasifica como ausente solo tras probar que no está desmontada, renombrada o inaccesible. Previsualiza con git worktree prune --dry-run --verbose.

4. Aplica solo el remedio correcto

Para un árbol limpio que ya no necesitas usa git worktree remove path; para mover usa move y tras un movimiento externo usa repair.

Para lectura paralela usa detached HEAD u otra rama. Usa force solo después de documentar qué estado sucio o bloqueado perderías.

5. Verifica un propietario y el resultado

Repite la lista porcelain y confirma que la rama aparece en el único propietario previsto. Reintenta solo el paso local fallido, no un merge o push remoto ya exitoso.

Termina con status y alcance de commits en el árbol conservado. Registra ruta propietaria, referencia, commits preservados y si cambió metadata, directorio o estado del wrapper.

Ilustración original que separa remedios para worktrees vivos, movidos y ausentes.
Ilustración original de Watch at Ease: remove, repair y prune resuelven estados distintos. Watch at Ease