我正在尝试将大小高达10-20 GB的文件提交给GIT存储库。但是GIT不允许我这样做。
获取以下错误:
致命:被不稳定的对象源数据搞糊涂了 d7cf3fdd8ba744a3ba85c70da114d5b4afbde390
GIT是否允许提交如此大的文件大小?或者是否可以提交给GIT的最大单个文件大小有限制?
如果是,那么有没有办法克服这个限制?
答案 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有更好的大文件处理算法之前。