Solución de problemas para deshacerse de files grandes en un repository git en GitHub

Tengo un proyecto llamado geoplot que hace un trazado geoespacial en Python. El código para ello se distribuye a través de git en GitHub. Puedes consultarlo aquí .

Como parte del process de desarrollo de este package, cargué y geoplot en el repository geoplot una carpeta llamada data/ que contenía una gran cantidad de files de datos en varios formattings. Estos files de datos se usaron para completar los ejemplos en la galería de ejemplos complementarios.

Sin embargo, estos files inflan el tamaño del repository general hasta ~ 150 MiB ( problema ). Esto claramente es demasiado, y es hora de que me deshaga de ellos.

El problema es que necesito no solo eliminar estos files del HEAD actual, sino que también elimino estos files de todo el historial de git . git rebase un enfoque manual usando git rebase que no funcionó. Luego probé la herramienta BFG Repo-Cleaner , como se recomienda en la pregunta canónica sobre el tema .

BFG me liberó de los files, ya no existen en ninguna parte de la historia. Sin embargo, el tamaño del repository (como se ve al ejecutar https://github.com/ResidentMario/geoplot.git ) ¡no bajó en absoluto!

Esto es lo que probé (less impresiones):

 java -jar ../bfg-1.12.15.jar --delete-folders "data" . git reflog expire --expire=now --all && git gc --prune=now --aggressive git push --set-upstream https://github.com/ResidentMario/geoplot.git master --force 

La printing completa está en un problema en GitHub .

¿Qué hice, si es que hice algo mal? ¿Cómo puedo diagnosticar el origen y borrar este espacio perdido?

reflog y el gc en 2010 , pero también reflog objects viejos .
(Nota: gc debería ir seguido de un repack )

En primer lugar, compruebe si al clonar su repository de nuevo, todavía tiene el mismo tamaño.

Como dice el OP Aleksey Bilogur en los comentarios :

  • debes asegurarte de que tu label no hace reference a los datos antiguos, y luego también debes forzar todas las tags y twigs (no solo el master )

     git push --tags origin --force 
  • los datos generados deben eliminarse del historial de repository.

Esto suena como un problema que podría resolverse sin herramientas externas, aprovechando filter-branch .

Si desea eliminar todo el historial del directory de data , puede ejecutar lo siguiente desde la raíz de su repository.

 git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r path/to/data' HEAD 

Eso cambiará cada compromiso en la ascendencia de su puntero HEAD actual. Luego, deberá actualizar todas las demás twigs y tags a estas confirmaciones recién creadas para eliminar por completo el equipaje de su repository.