Esto es lo que descubrí hasta ahora:no pude encontrar ninguna documentación sobre estos '.tmp-XXXX-pack' ocultos en el .git/objects/pack
carpeta. Todos los demás hilos que puedo encontrar son sobre no ocultos archivos con tmp_
prefijo en la misma carpeta. Los ocultos también se crean claramente durante la acción de reempaquetar y es posible que estos también se atasquen. No puedo confirmar si eso todavía es posible en git 2.3.0 (que actualicé desde entonces), pero al menos el requisito de espacio en disco no parece haber cambiado en esta versión más nueva; todavía no puede completar gc /reempacar. Al eliminar estos archivos .tmp, pude recuperar mis últimos 4 GB y git aún parece comportarse bien después; sin embargo, sus resultados pueden variar, así que asegúrese de tener una copia de seguridad antes de hacer esto . Finalmente, incluso 4 GB no fueron suficientes para volver a empaquetar con gc --agressive
. Mi .git
la carpeta es de 1,1 GB después de la limpieza, todo mi repositorio es de 1,7 GB. Entonces, el doble del tamaño de su repositorio posiblemente no sea suficiente para git gc
, incluso con la opción agresiva (que debería ahorrar espacio). Así que primero tuve que recuperar más espacio de otro lugar.
Finalmente, esto es lo que tengo ahora en mi secuencia de comandos de limpieza (que creo que podría ser una buena idea llamar desde un trabajo cron):
#!/bin/bash
set -e
#git gc or remove tmp if that fails (because out of disk space)
git gc --aggressive --prune=now || rm -f .git/objects/*/tmp_* && rm -f .git/objects/*/.tmp-*
Escenario similar (alrededor de 2,3 G disponibles), excepto git gc
sí mismo también fallaría con fatal: Unable to create '/home/ubuntu/my-app-here/.git/gc.pid.lock': No space left on device
Lo que funcionó fue git prune
primero, y luego ejecute el gc.