GitLab SSH推送内存不足失败malloc失败错误

时间:2019-02-22 14:09:57

标签: git ssh gitlab push

我正在尝试通过ssh将1.4GB的.sql大文件推送到gitlab项目。但是,推送失败并显示以下错误:<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class DefaultControllerTest extends WebTestCase { private $client = null; public function setUp() { $this->client = static::createClient(); } public function testLoginPage() { $url = $this->router->generate('index'); $crawler = $this->client->request('GET', $url); $this->assertSame(200, $client->getResponse()->getStatusCode()); //$this->assertContains('Login', $crawler->filter('h1')->text()); } }

这是我的gitconfig文件的内容


Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
remote: fatal: Out of memory, malloc failed (tried to allocate 1452837977 bytes)
fatal: sha1 file '<stdout>' write error: Broken pipe
error: remote unpack failed: unpack-objects abnormal exit

1 个答案:

答案 0 :(得分:1)

首先,Git 不允许不允许文件大于100 MB。因此,千兆字节实际上是没有机会的(否则增加最大大小是不好的!)

Git不允许这样做是有原因的。假设您有一个1 GB的文件。 git中的每个提交都不会保存差异,而是获取该文件的整个快照。因此,最终在3次提交之后,您的回购将达到3 GB的大小,并且仅会占用您的空间并导致克隆,提取和所有操作的速度降低。

如果使用git-lfs,则指向实际LFS跟踪文件的指针实际上已保存在您的存储库中。 3 GB数据仍然存在于远程存储库中(作为BLOB),但并非所有3 GB数据都保存在本地存储库中。git-lfs根据您的提交哈希值,懒惰地仅下载您当前使用的版本,而没有所有这三个版本,因此无论您正在执行的提交如何,您都只有1 GB的文件。