git推出内存不足,malloc失败

我试图将我的更改远程推送到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 MB。

我的build议是尝试几个与包有关的git参数:

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

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

不过,我的主机没有足够的内存(2GB),并保持失败。 我硬拷贝的回购,并将其移动到更多的RAM(8GB)的另一台机器。 它变得更好,但仍然失败。

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

一旦我在本地机器上修复了repo,我把它推到master上,覆盖远程repo, git push -f origin master

为了防止将来出现类似的错误,不要将不必要的大文件添加到回购站(在我的情况下,我得到了3.5GB的SQL转储:)),并禁用大文件(如图像,PDF,video)的增量压缩。 .gitattributes添加到.gitattributes

 *.pdf -delta *.jpg -delta 

你可以尝试改变configuration重新包装

 git config --global pack.windowMemory 256m 

我有同样的问题,并将一些参数更改为1024米后,问题依然存在:

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

我认为这个问题是关于你的电脑免费的RAM内存。

我很忙,重启后我终于可以推动这些变化了。

希望能帮助到你。

用这个:

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

它修复了我。

对于使用gitlab的人来说,看到这个错误

findgitlabconfiguration(/etc/gitlab/gitlab.rb)

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

然后: gitlab-ctl重新configuration刷新

我在我的.gitconfig文件中删除了这些设置:

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

推再次工作

检查你的盒子是否启用了交换。

 $free -m total used free shared buffers cached Mem: 494 339 154 33 0 60 -/+ buffers/cache: 278 216 Swap: 2047 40 2007 

如果没有,你可以创build一个。 我也尝试了Debian的这个Ubuntu的指南 。 但是应该有很多关于这个主题的教程。

如果你在Gitlab上find导致远程服务器上的问题的回购。

Gitlab将存储库存储在这个位置

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

find目录并运行此命令。

 git repack -a -f -d 

完成。

我在AWS t2.small上遇到了同样的问题。 还运行声纳。 我closuresSonar来释放内存,检出并重新启动Sonar。 我会增加实例的大小。

我面临着同样的问题,我尝试了所有的build议,但是重新启动电脑解决了这个问题……然后,我可以推动。