麻烦将大小为10-20 GB的文件提交给GIT

时间:2014-03-11 06:52:06

标签: git

我正在尝试将大小高达10-20 GB的文件提交给GIT存储库。但是GIT不允许我这样做。

获取以下错误:

  

致命:被不稳定的对象源数据搞糊涂了   d7cf3fdd8ba744a3ba85c70da114d5b4afbde390

GIT是否允许提交如此大的文件大小?或者是否可以提交给GIT的最大单个文件大小有限制?

如果是,那么有没有办法克服这个限制?

1 个答案:

答案 0 :(得分:4)

此消息来自git源代码:

    git_SHA1_Final(parano_sha1, &c);
    if (hashcmp(sha1, parano_sha1) != 0)
            die("confused by unstable object source data for %s", sha1_to_hex(sha1));

这个意味着什么是文件的内容在git第一次查看它(确定文件的基于内容的SHA-1对象名)和git能够的时间之间发生了变化从中制作一个压缩的“松散”物体。

如果在您尝试添加并提交文件时正在主动修改文件,则会发生这种情况。 Git需要一个“稳定快照”版本(锁定文件,或制作一个“安全”副本,在git摘要时不会改变,或者其他一些)。

也就是说, 对git存储库中“合理”文件大小的限制。请参阅this answer VonC(它还有一个更详细的答案,也是VonC的链接)。

过去,我在存储库中使用了2-4GB的“文件”,但是他们工作了,但到那时我们已经滥用了“git存储库”的想法了。这些也有时会破坏非常小的服务器上的内存限制:问题是包文件构建器中的deltifier尝试mmap所有内容。在较大的机器上,你可以制作更大的包装文件,然后小型机器就会破碎。

如果你有足够的内存,那就有可能。我建议不要这样做,至少在git有更好的大文件处理算法之前。

相关问题