git中提交后大文件损坏

git中提交后大文件损坏,git,Git,我在Windows上创建了一个新的git存储库。然后添加并提交一个9.8GB的zip文件。.git目录只有1.21 GB。当我签出该文件时,大小仅为1.44 GB 据我所知,git没有文件大小限制。git是否已损坏或存在一些限制?我使用的是最新的稳定版本(2.13.0)。编辑-实际尺寸限制的修订估算 我可以确认,试图在windows上使用git 1.12.0.windows.1提交多GB二进制文件时,我得到了一个损坏的包文件。我能够提交和检索一个大小类似的ascii文件,没有任何错误报告,但签出

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


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

编辑-实际尺寸限制的修订估算

我可以确认,试图在windows上使用git 1.12.0.windows.1提交多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位限制)。

编辑-修改了对实际大小限制的估计

我可以确认,试图在windows上使用git 1.12.0.windows.1提交多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位限制)。

您能重现这个问题吗?你还有原始的zip文件吗?你能重现这个问题吗?你还有原始的zip文件吗?很有趣。我也在使用64位Windows。这个2GB的限制有点令人惊讶,因为我在添加/提交文件时没有收到任何警告或错误。我在考虑用git备份我所有的个人数据。这样,我可以存储数十个甚至数百个版本的数据,同时保持文件大小较小。谢谢你的解释!我将研究
git lfs
。我同意缺少错误/警告是令人不安的,但我确实怀疑这是因为git所依赖的某些东西在没有警告/错误的情况下失败了,只是没有首先将所有数据传递给git。顺便说一句,还有一些测试表明,限制可能是4GB,而不是2,这是有道理的……将git视为备份工具,请注意git保持文件大小的方式不会像您希望的那样工作,如果您有二进制文件发生变化。(基本上,git必须完整地存储文件的每个版本。)此外,请注意,尽管LFS有助于处理此类文件,但我认为它不会压缩存储的数据;因此,总的“repo+LFS存储”大小可能比一个原始的git repo要大。不管git是否打算支持这么大的文件,它默默地破坏文件的事实是一个bug,简单明了。如果git不支持这么大的文件,它应该拒绝提交,而不是损坏它。@jetstream96-检查git的bug数据库,如果没有bug数据库,则添加一个报告,这不会有什么坏处。虽然我对常规维护人员了解不多,但在我看来,这类事情可能不会得到很多优先权,但肯定至少应该作为一个问题记录下来。有趣。我也在使用64位Windows。这个2GB的限制有点令人惊讶,因为我在添加/提交文件时没有收到任何警告或错误。我在考虑用git备份我所有的个人数据。这样,我可以存储数十个甚至数百个版本的数据,同时保持文件大小较小。谢谢你的解释!我将研究
git lfs
。我同意缺少错误/警告是令人不安的,但我确实怀疑这是因为git所依赖的东西在没有战争的情况下失败了