git push Недостаточно памяти, malloc не удалось - PullRequest
43 голосов
/ 13 января 2012

Я пытаюсь отправить свои изменения удаленно на GitHub, время от времени git не удается из-за

C:\dev\projects>git push -v
Pushing to https://user@github.com/mycompany/My-Project.git
Password for 'github.com':
fatal: Out of memory, malloc failed (tried to allocate 524288000 bytes)
fatal: write error: Invalid argument

Это очень, очень обостряет.Я выполнил следующие команды, обновил git (который стер мои настройки и вызвал много боли, но я отвлекся)

git gc --auto --prune=today --aggressive
git repack

Я даже столкнулсязначение

http.postbuffer

, но в конечном итоге оно снова завершится неудачей.

Это типичное приложение Rails 3.1, общий размер проекта на диске составляет 9,69 МБ.

Ответы [ 13 ]

30 голосов
/ 01 октября 2012

Мой совет: попробуйте несколько параметров git, связанных с пакетом:

[pack]
   threads = 1
   deltaCacheSize = 128m
   windowMemory = 50m

Что мне показало лучшие результаты, так это установка git config pack.threads 1 и git config pack.windowMemory 50m (по умолчанию 10 м).

Тем не менее, моему хосту не хватало оперативной памяти (2 ГБ), и он продолжал работать со сбоями. Я скопировал репозиторий и перенес его на другую машину с большим объемом оперативной памяти (8 ГБ). Стало лучше, но все равно не получилось.

Наконец, я скачал последнюю версию git (https://github.com/git/git), скомпилируйте и установите его. Это устранило проблему, просто запустив git repack -adf с теми же параметрами. После этого я запустил git gc --aggressive --prune=now

Как только я установил репо на своем локальном компьютере, я нажал его на мастер, перезаписав удаленное репо, git push -f origin master.

Во избежание подобных ошибок в будущем постарайтесь не добавлять ненужные большие файлы в репозиторий (в моем случае я получил дамп SQL объемом 3,5 ГБ :)) и отключите дельта-сжатие для больших файлов (таких как изображения, PDF-файлы, видео). ). Добавьте следующие строки в .gitattributes:

*.pdf -delta
*.jpg -delta
19 голосов
/ 21 февраля 2012

Вы можете попробовать изменить конфигурацию для repack с помощью

git config --global pack.windowMemory 256m
13 голосов
/ 02 марта 2015

Используйте это:

git gc --auto --prune=today --aggressive 
git repack 
git config --global http.postbuffer 524288000 
git config --global pack.windowMemory 256m

Это исправляет для меня.

5 голосов
/ 20 октября 2014

У меня была та же проблема, и после изменения некоторых параметров на 1024 м проблема не исчезла:

[pack]
     threads = 1
     deltaCacheSize = 1024m
     packSizeLimit = 1024m
     windowMemory = 1024m
[core]
     packedGitLimit = 1024m
     packedGitWindowSize = 1024m

Я думаю, что проблема связана со свободной оперативной памятью вашего ПК.

МояЯ был довольно занят, и после перезагрузки я смог наконец нажать изменения.

Надеюсь, это поможет.

4 голосов
/ 21 декабря 2016

для тех, кто использует gitlab и видит эту ошибку

найти конфиг gitlab (/etc/gitlab/gitlab.rb)

изменить значение gitlab_rails ['git_max_size'] (на большее значение)

затем: gitlab-ctl перенастроить для обновления

2 голосов
/ 23 ноября 2017

В моем случае это не имеет ничего общего с клиентской машиной.Это произошло со мной, потому что память сервера, на котором работает GitLab, была переполнена.Я увеличил объем памяти этой виртуальной машины, и проблема была решена.

2 голосов
/ 17 ноября 2017

У меня была такая же проблема на AWS t2.small.Также работает гидролокатор.Я отключил сонар, чтобы освободить память, проверил и перезапустил сонар.Я увеличу размер экземпляра.

2 голосов
/ 30 мая 2017

Если вы находитесь на Gitlab, найдите репозиторий, вызывающий проблему на удаленном сервере.

Gitlab хранит репозитории в этом месте

/var/opt/gitlab/git-data/repositories

Найдите каталог и выполните эту команду.

git repack -a -f -d

Готово.

2 голосов
/ 18 июня 2015

я удалил эти настройки в моем файле .gitconfig:

[http]
postbuffer = 524288000
[pack]
windowMemory = 1024m
deltaCacheSize = 1024m
packSizeLimit = 1024m

и пуш снова заработал

1 голос
/ 28 января 2019
git repack 
git config --global http.postbuffer 524288000 
git config --global pack.windowMemory 256m

Это исправлено для меня. и сделайте git push после него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...