我在谷歌上搜索过,找到了很多解决方案,但没有一个适合我。

我试图通过连接到LAN网络中的远程服务器从一台机器克隆。 在另一台机器上运行此命令会导致错误。 但是使用git运行相同的克隆命令://192.168.8.5…在服务器上,这是正常的并且成功的。

有什么想法吗?

user@USER ~
$ git clone  -v git://192.168.8.5/butterfly025.git
Cloning into 'butterfly025'...
remote: Counting objects: 4846, done.
remote: Compressing objects: 100% (3256/3256), done.
fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s
fatal: early EOF
fatal: index-pack failed

我已经在.gitconfig中添加了这个配置,但也没有帮助。 使用git版本为1.8.5.5.2 .msysgit.0

[core]
    compression = -1

当前回答

以前的回答建议设置为512m。我想说,有理由认为这在64位架构上是适得其反的。核心文档。packedGitLimit说:

缺省情况下,在32位平台上是256mib,在64位平台上是32tib(实际上是无限的)。这对于所有用户/操作系统都是合理的,除了最大的项目。您可能不需要调整这个值。

如果你想尝试一下,检查你是否设置了它,然后删除设置:

git config --show-origin core.packedGitLimit
git config --unset --global core.packedGitLimit

其他回答

就我而言,我只是升级了我的OpenSSL版本。旧版本的OpenSSL有漏洞,也没有可能需要的最新算法。截至今天,命令openssl version显示openssl 1.1.1f 31 Mar 2020。

在您的本地机器目录中,您可能会耗尽空间。在您要下载的机器中添加额外的存储空间,并重复签出。你的问题可能就是这么简单。

这些对我来说都没用,但使用Heroku的内置工具却奏效了。

heroku git:clone -a myapp

文档在这里:https://devcenter.heroku.com/articles/git-clone-heroku-app

网络质量很重要,尽量切换到不同的网络。 帮助我的是把我的互联网连接从维珍媒体(Virgin Media)的高速陆地宽带改为手机上的热点。

在此之前,我尝试了限制克隆大小的公认答案,尝试了在64位和32位版本之间切换,尝试了禁用git文件缓存,没有一个有用。

然后我通过我的手机切换到连接,第一步(git克隆—深度1 <repo_URI>)成功了。切换回我的宽带,但下一步(git fetch -unshallow)也失败了。所以我删除了到目前为止克隆的代码,切换到移动网络,再次尝试默认方式(git clone <repo_URI>),它成功了,没有任何问题。

此错误可能发生在git的内存需求。您可以将这些行添加到全局git配置文件中,即$USER_HOME中的.gitconfig,以解决这个问题。

[core] 
packedGitLimit = 512m 
packedGitWindowSize = 512m 
[pack] 
deltaCacheSize = 2047m 
packSizeLimit = 2047m 
windowMemory = 2047m