当我试图从GitLab (GitLab 6.6.2 4ef8369)克隆一个存储库时,我遇到了这个错误:
remote: Counting objects: 66352, done.
remote: Compressing objects: 100% (10417/10417), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
然后中止克隆。我该如何避免这种情况?
几天后,今天我才解决了这个问题。按照本文生成ssh密钥:
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
申报给
Git提供者(我正在使用的GitLab, GitHub)。
将此添加到本地标识。
然后通过命令克隆:
git clone username@mydomain.com:my_group/my_repository.git
没有错误发生。
上述问题
RPC失败;Curl 18传输关闭,读取数据出色
剩下的
因为通过HTTP协议克隆时出现错误(curl命令)。
并且,你应该增加缓冲区大小:
git config --global http.postBuffer 524288000
这种情况经常发生,我的网络连接很慢,我不得不克隆一个相当大的git存储库。最常见的问题是连接关闭,整个克隆被取消。
Cloning into 'large-repository'...
remote: Counting objects: 20248, done.
remote: Compressing objects: 100% (10204/10204), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
经过大量的尝试和错误,以及大量的“远程端意外挂断”之后,我有了一个适合我的方法。这个想法是先做一个浅克隆,然后用它的历史更新存储库。
$ git clone http://github.com/large-repository --depth 1
$ cd large-repository
$ git fetch --unshallow
这种情况的发生通常是由于以下原因之一:
缓慢的互联网。
切换到网络连接稳定的局域网电缆在很多情况下都有帮助。在获取时避免执行任何并行网络密集型任务。
服务器端TCP/IP连接超时。
你也无能为力。您所能做的就是请求系统管理员或CI/CD团队增加etcp /IP超时时间并等待。
服务器负载过重。
由于工作时间服务器负载过重,下载大文件可能会不断失败。晚上开始下载后离开你的机器。
客户端机器上的小HTTPS缓冲区。
增加post和request的缓冲区大小可能会有所帮助,但不能保证
Git配置——global http。postBuffer 524288000
Git配置——global http。maxRequestBuffer 524288000
Git配置——global core.compression 0
这个问题100%解决了。我正面临这个问题,我的项目经理改变了回购的名称,但我使用旧的回购名称。
Engineer@-Engi64 /g/xampp/htdocs/hospitality
$ git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repo/cms
Cloning into 'cms'...
remote: Counting objects: 10647, done.
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
我是如何解决这个问题的。回购链接是无效的,所以这就是为什么我面临这个问题。克隆前请检查您的回购链接。
当我把一些代码推到Github时,我也遇到了同样的问题。
我尝试了git配置——global http。postBuffer 524288000,但它没有为我工作。
原因
这是因为你的提交历史和/或任何文件的大小更大。
我的情况
在我的例子中,是包锁。Json导致了这个问题。
它的大小为1500+KB,代码行数为33K。
我是怎么解决的?
我提交并推送了所有没有package-lock.json的东西
复制package-lock.json的内容。
创建一个名为package-lock的新文件。json从GitHub回购页面。
粘贴包锁的内容。Json并提交。
少管员停在本地。
和完成。
Tips
保持每个提交大小较小
推动经常
使用良好的网络连接
我希望这对你有所帮助。
git clone --global core.compression 0
then
git clone --depth=1 <https://your_repo.git>
then
git fetch --depth=2
then
git fetch --depth=10
...
等等,直到他写到
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
最后你可以写
git fetch --unshallow
你会被扔出去
fatal: --unshallow on a complete repository does not make sense
如果在某个阶段再次得到错误,请尝试将——depth属性设置为较小的值并逐渐进一步增加