Reducir el tamaño del repositorio de Git

Resuelto sent-hil asked hace 14 años • 4 respuestas

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?

sent-hil avatar Jan 22 '10 18:01 sent-hil
Aceptado

Actualización de febrero de 2021, once años después: el nuevo git maintenancecomando ( página de manual ) debería reemplazar git gcy se puede programar .


Original: git gc --aggressivees 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 gcsolo 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-branchPuede 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-repoahora (Git 2.24+, cuarto trimestre de 2019) reemplaza el obsoleto git filter-brancho 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
VonC avatar Jan 22 '2010 11:01 VonC

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
sent-hil avatar Jan 23 '2010 02:01 sent-hil