git clone 失败fatal: early EOF fatal: the remote end hung up unexpectedly fatal: index-pack failed

有时候我们需要下载一个文件较多,且文件较大的git项目时候,使用git clone 克隆远程库时,往往会出现失败的情况如下:

git clone提示:

fatal: early EOF

fatal: the remote end hung up unexpectedly

fatal: index-pack failed

网上找了很长时间的解决方案,很多解答都是运行以下命令:

git config http.postBuffer 524288000

在 git bash 上运行上述代码后仍未解决问题,因为此命名的目的是增加缓存空间到500M,这是用于解决上传大小限制的问题,但并不能解决我们遇到的问题。

考虑到可能win10的一些限制,我打算使用linux来重新clone

显示无法连接:

ssh_dispatch_run_fatal: Connection to 13.250.177.223 port 22: Software caused connection abort

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

是怀疑是连接不到github.com了,首先在cmd窗口中,尝试ping一下百度,可以,ping github不可以

因此怀疑是:本地DNS无法解析导致的。

git clone 失败fatal: early EOF fatal: the remote end hung up unexpectedly fatal: index-pack failed_第1张图片

第一步、修改Hosts

通过问题的搜索了解到 github 访问很慢一般通过修改 hosts 文件解决的。

在 Ubuntu18.04 中打开终端,输入命令 sudo vim /etc/hosts ,英文输入法输入 G , vim 编辑器跳到 hosts 文件的最后一行,添加以下几行:

151.101.73.194 github.global.ssl.fastly.net

192.30.253.113 github.com

添加完后,退出 vim 编辑器:按下 Esc 键,英文输入法输入: wq (是" :wq "啊,一定要记得有冒号),回车即可。更新 DNS 缓存,输入 sudo /etc/init.d/networking restart , Mac OS 的话输入 sudo dscacheutil -flushcache 即可更新 DNS 缓存,Windows的话直接用管理员权限修改 C:\Windows\System32\drivers\etc\hosts 文件即可。可能你会遇到无法修改的情况,请参看这里:Windows10没有修改hosts文件权限的解决方案(亲测有效)

修改完成后保存即可。

下面是可以添加的内容,我只添加了两行就可以解决:

#Github151.101.73.194 github.global.ssl.fastly.net151.101.108.133 assets-cdn.github.com185.199.111.153 documentcloud.github.com185.199.110.153 documentcloud.github.com185.199.109.153 documentcloud.github.com185.199.108.153 documentcloud.github.com192.30.253.113 github.com192.30.253.112 github.com192.30.253.119 gist.github.com192.30.253.118 gist.github.com185.199.111.153 help.github.com185.199.110.153 help.github.com185.199.109.153 help.github.com185.199.108.153 help.github.com192.30.253.121 nodeload.github.com192.30.253.120 nodeload.github.com151.101.108.133 raw.github.com18.204.240.114 status.github.com18.211.136.12 status.github.com18.211.136.12 status.github.com192.30.253.166 training.github.com151.101.109.194 github.global.ssl.fastly.net151.101.108.133 avatars0.githubusercontent.com151.101.72.133 avatars1.githubusercontent.com

为了解决访问速度过慢的原因,可以如下处理,未实践

第二步,修改DNS

这样算是完事了?重新访问 github ,发现并没有多大改善,我在想是不是 DNS 缓存的问题?很有可能哦~话不多说,赶紧修改 DNS 文件呀!

修改 DNS 文件

终端内输入 sudo vim /etc/resolv.conf

然后可以注掉本地的 DNS ,添加 DNS ,输入:

nameserver 8.8.8.8nameserver 8.8.4.4nameserver 114.114.114.114

退出 vim 编辑器,同上。

更新 DNS 缓存,同上。




如果你的错误信息包含如下:那么属于SSL问题,可以参考如下处理,未实践过

error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054

查看了很多博客,最终确定,这个问题是:

SSL错误

因为服务器的SSL证书没有经过第三方机构的签署,所以才报错。

解决方案如下:

第一步,克隆远程仓库时,用env命令设置GIT_SSL_NO_VERIFY环境变量为”ture”,并同时调用正常的git clone命令。完整的命令如下:

envGIT_SSL_NO_VERIFY=truegitclonehttps://

第二步,在克隆完毕的仓库中将http.sslVerify设置为”false”。完整的命令如下:

git config http.sslVerify "false"

点评:以上方法应该是Git处理可信任的SSL临时证书很好的方法,第一步使用env命令保证了忽略证书错误是单次行为,不会成为默认的设置。第二次,则把忽略证书错误的设置限定在特定的仓库,避免扩大该设置的适用范围而引起的潜在安全风险。

你可能感兴趣的:(git clone 失败fatal: early EOF fatal: the remote end hung up unexpectedly fatal: index-pack failed)