github-git推出内存不足,malloc失败

我试图将我的更改远程推送到GitHub,由于

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。

Jared Knipp asked 2020-07-27T13:37:03Z
14个解决方案
30 votes

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

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

对我来说更好的结果是设置29849910962222540540和298499109622225408408(默认值为10m)。

尽管如此,我的主机仍没有足够的RAM内存(2GB)并一直出现故障。 我用硬拷贝了仓库,并将其移至另一台具有更多RAM(8GB)的计算机上。 情况有所好转,但仍然失败。

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

一旦我在本地计算机上修复了存储库,便将其推送到主目录,覆盖了远程存储库.gitattributes

为了避免将来出现类似的错误,请尝试不要在存储库中添加不必要的大文件(在我的情况下,我获得了3.5GB的SQL转储:),并禁用大文件(例如图像,PDF,视频)的增量压缩。 将以下行添加到.gitattributes

*.pdf -delta
*.jpg -delta
Diego Pino answered 2020-07-27T13:37:41Z
21 votes

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

git config --global pack.windowMemory 256m
ralphtheninja answered 2020-07-27T13:38:01Z
14 votes

用这个:

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

它为我修复。

Knase answered 2020-07-27T13:38:26Z
5 votes

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

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

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

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

希望能帮助到你。

Adrian Garcia answered 2020-07-27T13:39:03Z
4 votes

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

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

将gitlab_rails ['git_max_size']的值更改为更大的值

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

sirs05 answered 2020-07-27T13:39:36Z
2 votes

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

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

然后推再次起作用

Mau answered 2020-07-27T13:40:01Z
2 votes

如果您使用的是Gitlab,请在远程服务器上找到导致问题的存储库。

Gitlab将存储库存储在此位置

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

查找目录并运行此命令。

git repack -a -f -d

做完了

Rick answered 2020-07-27T13:40:34Z
2 votes

我在AWS t2.small上遇到了相同的问题。 还运行声纳。 我关闭了Sonar以释放内存,签出并重新启动Sonar。 我将增加实例大小。

TimP answered 2020-07-27T13:40:54Z
2 votes

就我而言,它与客户端计算机无关。 这发生在我身上,因为运行GitLab的服务器的内存已满。 我增加了该虚拟机的内存,问题得以解决。

tamasgal answered 2020-07-27T13:41:14Z
1 votes

检查您的框中是否启用了交换。

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

如果没有,您可以创建一个。 我尝试了适用于Debian的ubuntu指南。 但是应该有很多关于该主题的教程。

raratiru answered 2020-07-27T13:41:39Z
1 votes

对我来说,问题还在于服务器与客户端相比没有足够的内存。 如果在结帐时发生这种情况,我会感觉到客户端的问题,如果在上推时发生这种情况,则服务器可能是问题。

Spencer Williams answered 2020-07-27T13:42:00Z
1 votes
git repack 
git config --global http.postbuffer 524288000 
git config --global pack.windowMemory 256m

它为我固定。 然后执行git push。

Raunak Agrawal answered 2020-07-27T13:42:20Z
0 votes

您可能只有一个或多个非常大的文件。 检查文件是否大于50MB,这是正常的github限制:

find . -type f -size +50M
bhlowe answered 2020-07-27T13:42:40Z
-1 votes

我遇到了同样的问题,我尝试了所有建议,但是解决问题的方法是重新启动计算机...然后,我可以进行推送。

Luiz Rossi answered 2020-07-27T13:43:01Z
translate from https://stackoverflow.com:/questions/8855317/git-push-out-of-memory-malloc-failed