Error de espacio en el montón de Java al intentar git push

He intentado llevar mi compromiso al repository de git pero muestra " error de espacio en el montón de Java ". El logging del empuje se muestra a continuación:

Counting objects: 108, done. Delta compression using up to 8 threads. Compressing objects: 100% (93/93), done. POST git-receive-pack (chunked) Writing objects: 100% (108/108), 561.41 MiB | 4.91 MiB/s, done. Total 108 (delta 51), reused 0 (delta 0) error: unpack failed: error Java heap space To https://repo_address ! [remote rejected] dev -> dev (n/a (unpacker error)) error: failed to push some refs to 'https://repo_address' 

Investigué en línea, pero existen algunas soluciones para Gerrit que no estoy usando.

Esta respuesta es en respuesta a su problema de eliminar files grandes de su confirmación actual y luego volver a presionar su confirmación para ver si se trata de las grandes instalaciones que causan el problema.

Imagina comenzar con esta estructura dir:

 .git/ libs/somefile.jar /someotherfile.jar src/otherstuff.java 

En su situación actual, tiene un montón de files en su compromiso que está tratando de impulsar, pero se da count de que realmente desea eliminar algunos de los extras que ha agregado que no son necesarios en sentido ascendente, pero que desea conservar localmente, pero también hazlo para que nunca se levanten.

Puedes ver con qué files está tu commit actual con:

 git log --pretty=format:"%h %s" --decorate --numstat HEAD^..HEAD 

Ahora, queremos crear un nuevo object de confirmación sin la carpeta libs / y marcarlo en .gitignore para que nunca se agregue en el futuro.

 # either do this recursively to the dir with this command: git rm -r --cached libs # or individual name the files: git rm --cached libs/somefile.jar git rm --cached libs/someotherfile.jar 

Ahora que tiene cambios locales, puede verlos con git status :

 $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: libs/somefile.jar deleted: libs/someotherfile.jar Untracked files: (use "git add <file>..." to include in what will be committed) libs/ 

Si miras tu sistema de files, los files deberían estar allí. Eso es lo que hizo --cached , guardó los files del espacio de trabajo, solo los eliminó de git repo.

Ahora editamos el file .gitignore y agregamos inputs para /libs/ o nombramos los files individualmente, y luego lo agregamos a su set de cambios:

 git add .gitignore 

Finalmente, queremos comprometer todos estos cambios, reemplazando la antigua confirmación con todos los files de gran tamaño.

Esto se hace con git commit --amend . Todo lo que hace es replace tu confirmación actual por una nueva, en lugar de agregar una nueva confirmación sobre la anterior.

Aparecerá el cuadro de dialog habitual para el post de confirmación. Puede mantenerlo igual si lo desea, o agregar algunas notas adicionales al post de confirmación. Este será el post de confirmación de la nueva confirmación, reemplazando la confirmación anterior por completo (es decir, los files lib se habrán eliminado de la confirmación).

Si haces un estado de git, deberías ver que todavía estás 1 commit antes del origen / master, y si revisas los files en el commit (con el command git log ... anterior) no debería tener ninguno de sus files no deseados en él.

Ahora intente volver al control remoto.

Si estás atascado en algún momento de una situación anterior, publica tu salida de git status . Por lo general, le da todos los consejos que necesita saber cómo continuar.