git push verbose, Entity Too Large, debido a .git / objects / pack /

No puedo hacer clic en el control remoto debido al tamaño excesivo de los datos. Mi directory más grande es 331MB (total de 525MB) pero mi directory .git es de 40GB, principalmente debido a .git / objects / pack /

La salida detallada (git push -v) no es muy detallada (ver más abajo), así que no sé nada más que eso.

Q1. ¿Hay alguna configuration más detallada para git push que me ayude a ver en qué object falla específicamente?

Q2. ¿Mi .git / objects / pack es anormalmente grande para mi código total / tamaño de file? Si es así, ¿cómo puedo networkingucirlo?

> git pull > git push -v Counting objects: 40, done. Delta compression using up to 4 threads. Compressing objects: 100% (38/38), done. error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large fatal: The remote end hung up unexpectedly Writing objects: 100% (40/40), 23.49 GiB | 219.65 MiB/s, done. Total 40 (delta 23), reused 2 (delta 0) fatal: The remote end hung up unexpectedly Everything up-to-date 

NÓTESE BIEN. Estoy usando git 2.7.4 con bitbucket en Ubuntu 16.04

Q1 – No hay mucho que decir aquí; su repository es demasiado grande para bitbucket.

Q2 : el file del package contiene la database, es decir, el historial diferido / comprimido de su proyecto. Esto puede variar en tamaño salvajemente en relación con su tree de trabajo, por muchas razones. (Por ejemplo, ¿cuánto historial hay? ¿Qué types de files?) Dicho esto, tanto su tree de trabajo como su database parecen grandes, lo que me hace pensar que está almacenando files binarys grandes. (Imágenes. Código de progtwig comstackdo – .jar, .war, .lib, .exe, …)

Por sí mismo, git no es muy bueno en el event handling binarys grandes. Si está extrayendo .jar u otros files de tipo biblioteca de dependencia, considere usar herramientas de compilation para recuperarlos en lugar de almacenarlos en el control de código fuente. Si está almacenando activos binarys que realmente necesitan ser parte de su tree fuente, considere usar git lfs.

Puede utilizar una herramienta como BFG Repo Cleaner o lfs-migrate para reescribir su repository para que use lfs. He usado ambos, a veces juntos, aunque hay trucos para hacer que jueguen bien. Cada uno tiene sus ventajas y desventajas.

Y / O puede eliminar parte o la totalidad del historial para conservar espacio. Incluso comenzando con un repository nuevo, si tiene grandes activos binarys, use lfs o encuentre una forma de no almacenarlos en git, o simplemente se encontrará nuevamente con el mismo problema.