git致命:内存不足,malloc在分支推送时失败

时间:2015-05-13 13:42:42

标签: git github

我知道在StackOverflow上已经有很多问题,但是我没有设法解决我的问题。

我的同事指派我参加一个新项目。该应用程序托管在安装了git的测试Debian服务器上。

首先我创建了我的分支:

git checkout -b mybranch

然后我对一些文件做了一些小修改。

当我尝试将其推送到Github时(使用我的github帐户)

git add myfile.php
git commit -m "my first commit"
git push origin mybranch

我收到此错误:

  

致命:内存不足,malloc失败

我不明白这是什么意思。我试图推送的文件总大小为156Ko。此外,该项目的总规模仅为10,9Mo。

我尝试重新启动服务器,但同样的情况发生了。

当我在服务器上运行free时,我得到了:

             total       used       free     shared    buffers     cached
Mem:        505312     239532     265780          0      51576      71580
-/+ buffers/cache:     116376     388936
Swap:            0          0          0

我的同事之前从未遇到过这个问题,即使是在同一个测试服务器上也是如此。

有人可以向我强调这个错误的原因和可能的解决方法吗? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

从错误消息中,我不清楚错误是在本地还是在远程。

由于它适用于您的同事,问题可能在您的计算机上。也许Git回购已损坏。请尝试使用git fsck

进行检查

您还可以第二次将远程仓库克隆为/tmp/test1,然后尝试git push /tmp/test1。如果这样做,问题是远程的。如果失败,您的PC上就会出现问题。

在您的PC上,检查您是否有足够的内存空间以及单个进程可以请求的内存量。在Linux上,请使用ulimit -a

[编辑] 此外,free的输出表明您只有256MB的可用内存(您可以使用free -h验证更可读的数字)。这对于今天运行大多数程序来说勉强够用。 Git需要大量的内存才能发挥其魔力,所以是的,实际上你可能没有太少的内存。

答案 1 :(得分:0)

此问题的另一种可能性,尤其是在您配置新服务器时,请确保您拥有交换文件。这是我使用新的CentOS 6.7的情况。你可以尝试:

swapon -s

如果没有文件那么,如果你像我一样,这可能是解决方案(创建一个)。对于CentOs,您可以关注https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-swap-adding.html。如果你有另一个发行版,只需google。

答案 2 :(得分:0)

这可能是存储库中的一些大文件的原因。也许Zip文件,特别是如果你有一个备份你的代码/数据库的插件。

要检查这些大文件,请进入存储库的根文件夹并运行:

find . -size +10M -ls

这将显示较大的文件。

此时你可以:

  1. 通过创建.gitignore并添加这些文件所在的路径来忽略这些文件
  2. 或者如果重要的话

    1. 使用此代码在根目录中创建.gitattributes文件(如果大文件都是zip文件): *.zip binary -delta
    2. 这将确保您将zip文件视为二进制文件 - 而不是跟踪其中所做的更改。

      如果这不起作用,您可以在此处访问此答案并试用它们:

      Git on Windows, "Out of memory - malloc failed"

      祝你好运!