Reducir el tamaño del repositorio de Git
Intenté buscar un buen tutorial sobre cómo reducir el tamaño del repositorio, pero no encontré ninguno. ¿Cómo reduzco el tamaño de mi repositorio? Son aproximadamente 10 MB, pero Heroku solo permite 50 MB y estoy lejos de terminar de desarrollar mi aplicación.
Ya agregué los sospechosos habituales (registro, proveedor, documento, etc.) al archivo .gitignore . Aunque agregué .gitignore recientemente.
¿Qué puedo hacer?
Actualización de febrero de 2021, once años después: el nuevo git maintenance
comando ( página de manual ) debería reemplazar git gc
y se puede programar .
Original: git gc --aggressive
es una forma de forzar que se lleve a cabo el proceso de poda (sin duda:) git gc --aggressive --prune=now
. También tienes otros comandos para limpiar el repositorio. Sin embargo, no olvide que a veces git gc
solo puede aumentar el tamaño del repositorio .
También se puede utilizar después de filter-branch
, para marcar algunos directorios que se eliminarán del historial (con una mayor ganancia de espacio); mira aquí . Pero eso significa que nadie está retirando su repositorio público. filter-branch
Puede mantener las referencias de respaldo.git/refs/original
para que ese directorio también se pueda limpiar.
Finalmente, como se menciona en este comentario y esta pregunta ; Limpiar el reflog puede ayudar:
git reflog expire --all --expire=now
git gc --prune=now --aggressive
Una solución aún más completa y posiblemente peligrosa es eliminar los objetos no utilizados de un repositorio git.
Tenga en cuenta que git filter-repo
ahora (Git 2.24+, cuarto trimestre de 2019) reemplaza el obsoleto git filter-branch
o BFG : es una herramienta basada en Python, que se debe instalar primero.
Joe sugiere :
# Find the largest files in .git:
git rev-list --objects --all | grep -f <(git verify-pack -v .git/objects/pack/*.idx| sort -k 3 -n | cut -f 1 -d " " | tail -10)
# Strat filtering these large files:
git filter-repo --path-glob '../../src/../..' --invert-paths --force
#or
git filter-repo --path-glob '*.zip' --invert-paths --force
#or
git filter-repo --path-glob '*.a' --invert-paths --force
git remote add origin [email protected]:.../...git
git push --all --force
git push --tags --force
Esto es lo que hice:
git gc
git gc --aggressive
git prune
Eso pareció haber funcionado. Empecé con unos 10,5 MB y ahora son poco más de 980 KB.
Puedes ejecutar los tres comandos con prune hasta ahora usando:
git gc --aggressive --prune=now
Documentación:
- https://git-scm.com/docs/git-gc