在git中提交后,大文件已损坏

时间:2017-05-17 10:56:46

标签: git

我在Windows上创建了一个新的git存储库。然后添加并提交一个9.8 GB的zip文件。 .git目录仅为1.21 GB。当我签出该文件时,大小只有1.44 GB。

据我所知,git没有文件大小限制。是git坏了还是有一些限制?我正在使用最新的稳定版本(2.13.0)。

1 个答案:

答案 0 :(得分:2)

编辑 - 事实上大小限制的修订估算值

我可以确认尝试使用git 1.12.0.windows.1在Windows上提交多GB二进制文件。我收到了一个损坏的包文件。我能够提交和检索一个类似大小的ascii文件,没有任何报告错误,但签出的文件明显损坏(据我所知,截断)。

"据我所知",顺便说一句,因为diff(来自bash环境)无法正确处理更大的文件。它开始起作用的截止值似乎在2-4GB范围内。 (也就是说,大约2GB的文件工作正常 - 使用git和diff。大约4GB的文件没有。)

这表明至少有一些处理文件的进程有32位限制。我认为这个问题从git的角度来看是环境问题 - 也就是git所依赖的lib或实用程序的限制。

所以我得出结论,4GB可能是事实上的文件大小限制,至少在Windows系统上是这样。 (值得注意的是我的Windows安装是64位的;所以我怀疑操作系统本身不是问题。但我也不认为git程序本身就是问题。)

冒着酸葡萄气氛的风险:你为什么要做你所描述的事情?即使它没有失败,git也不会以任何有用的方式处理~10GB的zip文件。大型二进制文件不在git的驾驶室中。

您可以尝试使用git lfs;它有助于git在处理大型二进制文件时遇到的几个问题(尽管如果它们确实来自环境,它可能成为相同的32位限制的受害者)。