我正在尝试通过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
答案 0 :(得分:1)
首先,Git 不允许不允许文件大于100 MB。因此,千兆字节实际上是没有机会的(否则增加最大大小是不好的!)
Git不允许这样做是有原因的。假设您有一个1 GB的文件。 git中的每个提交都不会保存差异,而是获取该文件的整个快照。因此,最终在3次提交之后,您的回购将达到3 GB的大小,并且仅会占用您的空间并导致克隆,提取和所有操作的速度降低。
如果使用git-lfs,则指向实际LFS跟踪文件的指针实际上已保存在您的存储库中。 3 GB数据仍然存在于远程存储库中(作为BLOB),但并非所有3 GB数据都保存在本地存储库中。git-lfs根据您的提交哈希值,懒惰地仅下载您当前使用的版本,而没有所有这三个版本,因此无论您正在执行的提交如何,您都只有1 GB的文件。