Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿Falta la ruta de un Git worktree? Repara o bloquea antes de prune

La ruta ausente puede estar movida, temporalmente fuera de línea o realmente eliminada. Conserva HEAD e index por worktree, clasifica y elige repair, lock o prune.

Flujo original que inventaría un Git worktree ausente y separa traslado, desconexión temporal y eliminación real.
Ilustración original: Ilustración técnica original: clasifica antes de repair, lock o prune. Watch at Ease

Una ruta registrada ausente es un estado ambiguo, no permiso para borrar metadatos. El mismo síntoma puede ser una carpeta movida, un recurso sin montar o un worktree realmente descartado.

Conserva la administración por worktree y los archivos accesibles antes de limpiar. Después elige una sola vía: reparar un traslado, bloquear almacenamiento intermitente o podar solo un registro probado como obsoleto.

1. Congela la evidencia antes de limpiar

Desde un worktree sano ejecuta git worktree list --porcelain -z y guarda path, HEAD, branch, locked y prunable. Resuelve el Git común y el directorio administrativo afectado; registra hashes de gitdir, HEAD e index y copia ese directorio con Git quieto.

Conserva también la carpeta accesible y archivos sin seguimiento. La punta de rama es historia compartida, pero los cambios no preparados viven en la carpeta y el estado preparado en el index específico.

2. Clasifica la ruta ausente

Si la carpeta existe en otro lugar, está movida. Si depende de unidad portátil, red o montaje temporal, está fuera de línea. Solo está eliminada cuando el responsable confirma que tampoco necesita el trabajo sin commit.

No uses prune para descubrir. Un back-pointer absoluto incorrecto puede hacer parecer obsoleto un worktree vivo entre contenedor y host.

3. Repara traslados y bloquea rutas intermitentes

Pasa la nueva ruta del linked worktree a repair y compara gitdir, HEAD y rama con la evidencia.

Bloquea el almacenamiento intermitente con una razón mientras sea accesible. locked evita prune; desbloquea solo tras volver la ruta y funcionar una orden Git normal.

4. Acepta la reparación con el estado preparado

Repite status y git diff --cached, comprueba la rama o detached HEAD y lee un objeto Git normal. No sobrescribas la copia de evidencia antes de aceptar.

En la prueba Git 2.51.1, mover la carpeta marcó prunable el registro antiguo y el dry-run propuso borrarlo. repair conservó un archivo añadido al index; con lock previo, la ausencia simulada no fue candidata a prune.

5. Poda solo un registro obsoleto demostrado

Tras probar que ya no sirve, usa --dry-run --verbose, vincula cada candidato al registro de evidencia y luego limpia. Mientras exista la ruta, prefiere worktree remove.

Si ya se podó, detén más limpieza y conserva archivos, objetos compartidos y reflogs. fsck informa objetos, pero no es un botón de deshacer automático.

Mapa original que separa archivos de trabajo, historia compartida y HEAD, index, gitdir y lock por worktree.
Ilustración original: Ilustración técnica original: prune borra administración por worktree; cada dato tiene otro límite de supervivencia. Watch at Ease