git push内存不足,malloc失败了

Jar*_*ipp 43 git github

我试图将我的更改远程推送到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
Run Code Online (Sandbox Code Playgroud)

这非常非常恶化.我已经运行了以下命令,升级了git(它消除了我的设置并引起了很多痛苦,但我离题了)

git gc --auto --prune=today --aggressive
git repack
Run Code Online (Sandbox Code Playgroud)

我甚至碰到了价值

http.postbuffer
Run Code Online (Sandbox Code Playgroud)

但最终它会再次失败.

这是典型的Rails 3.1应用程序,磁盘上的总项目大小为9.69 MB.

Die*_*ino 30

我的建议是尝试几个与pack相关的git参数:

[pack]
   threads = 1
   deltaCacheSize = 128m
   windowMemory = 50m
Run Code Online (Sandbox Code Playgroud)

对我来说更好的结果是设置git config pack.threads 1git config pack.windowMemory 50m(默认为10米).

尽管如此,我的主机没有足够的RAM内存(2GB)并且仍然失败.我很难复制repo并将其移动到另一台具有更多RAM(8GB)的机器上.它变得更好但仍然失败了.

最后,我下载了最新版本的git(https://github.com/git/git),编译并安装它.这只是通过运行git repack -adf相同的参数来解决问题.之后我跑了git gc --aggressive --prune=now

一旦我在我的本地机器上修复了回购,我就把它推到掌握,覆盖了远程仓库git push -f origin master.

为了防止将来出现类似错误,请尽量不要在repo中添加不必要的大文件(在我的情况下,我得到了3.5GB的SQL转储:))并禁用大型文件(如图像,PDF,视频)的增量压缩.将以下行添加到.gitattributes:

*.pdf -delta
*.jpg -delta
Run Code Online (Sandbox Code Playgroud)


ral*_*nja 22

您可以尝试更改重新包装的配置

git config --global pack.windowMemory 256m
Run Code Online (Sandbox Code Playgroud)


Kna*_*ase 14

用这个:

git gc --auto --prune=today --aggressive 
git repack 
git config --global http.postbuffer 524288000 
git config --global pack.windowMemory 256m
Run Code Online (Sandbox Code Playgroud)

它修复了我.

  • 当我尝试克隆存储库时,更改后缓冲区为我解决了这个问题。 (2认同)

Adr*_*cia 5

我遇到了同样的问题,将一些参数更改为1024m后,问题仍然存在:

[pack]
     threads = 1
     deltaCacheSize = 1024m
     packSizeLimit = 1024m
     windowMemory = 1024m
[core]
     packedGitLimit = 1024m
     packedGitWindowSize = 1024m
Run Code Online (Sandbox Code Playgroud)

我认为该问题与PC的可用RAM内存有关。

我的很忙,重新启动后,我终于可以推送更改了。

希望能帮助到你。

  • 我不确定您为什么要发布所有这些值,如果它们没有帮助。这很混乱 (3认同)

小智 5

对于使用 gitlab 并看到此错误的人

找到 gitlab 配置(/etc/gitlab/gitlab.rb)

更改gitlab_rails['git_max_size']的值(更改为更大的值)

然后:gitlab-ctl重新配置刷新