Tecnología · GUÍA PRÁCTICA
¿Git dice que existe index.lock? Demuestra el propietario antes de borrar
El bloqueo puede pertenecer a un Git activo, ser residuo de un fallo, reaparecer por un hook o IDE, o indicar un repositorio no escribible. Resuelve la ruta real, identifica al titular y conserva el estado preparado antes de reparar.

index.lock protege una actualización del índice de Git; no es basura que deba borrarse al verla. El mismo mensaje puede significar escritor activo, residuo, recreación continua o fallo al reemplazar el índice.
Sigue la evidencia: ruta efectiva, estado preparado, proceso titular, reaparición y escritura. Luego aplica una sola reparación limitada.
Conserva el estado y resuelve la ruta real
Guarda el error, git status y git diff --cached --stat. No borres .git/index. Usa git rev-parse --path-format=absolute --git-path index.lock para obtener la ruta efectiva.
Registra existencia, propietario, permisos, tamaño y fecha. Git usa index.lock para construir un índice nuevo y después confirmarlo o revertirlo.
Demuestra qué proceso lo posee o lo recrea
Usa lsof sobre la ruta exacta en Linux/macOS y Process Explorer o Handle en Windows. Identifica proceso, cuenta y padre antes de detenerlo.
Si no hay titular, observa un solo reintento. Si el archivo vuelve enseguida, pausa el IDE, hook, monitor, agente o tarea y serializa las escrituras.
Borra solo un bloqueo obsoleto confirmado
Solo es obsoleto si la ruta es correcta, no hay titular, la operación terminó y no reaparece. Guarda el estado y elimina únicamente ese index.lock, no index, HEAD, refs ni otros bloqueos.
Ejecuta git status y reintenta una sola escritura. Confirma que el bloqueo desaparece y que git diff --cached conserva solo los cambios previstos.
Trata permisos y unlink como otro fallo
Si Git no puede crear, renombrar o eliminar el bloqueo, revisa propietario, escritura y sistema de archivos del directorio Git con el mismo usuario.
No uses sudo git ni chown recursivo como solución genérica. Repara solo el usuario, montaje, antivirus o política demostrado por la evidencia.
Cierra con una prueba reproducible
Ejecuta la escritura original desde un solo terminal; comprueba código de salida, desaparición del bloqueo, status y diff preparado.
En automatización, serializa comandos que escriben el mismo índice y registra inicio, fin y ruta del repositorio.
