Py学习  »  Git

Git声称,当源站按预期接收到它时,它无法推送

Kirna • 3 年前 • 1297 次点击  

我注意到我的Github操作失败了,尽管实际输出很好,所以我检查了日志,发现git抛出了以下错误:

+ git push origin master
error: RPC failed; curl 56 OpenSSL SSL_read: Connection timed out, errno 110
send-pack: unexpected disconnect while reading sideband packet
fatal: the remote end hung up unexpectedly
Everything up-to-date

问题是,实际的推动 经过在Github上查看,当日志显示推送失败时,我看到存储库中出现了成功的输出。为什么git声称它无法推送,而我可以看到存储库中的输出?由于git抛出了这个错误,Github认为我的操作失败了,所以它通过电子邮件向我发送了相关信息并抛出了错误,所以我的监控软件提醒我一个关键工作流失败了。可能很重要的一点是,我正在使用这个repo来承载高达100MB的二进制文件,我有很多这样的文件。有人能帮我解决这个问题吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131803
 
1297 次点击  
文章 [ 1 ]  |  最新文章 3 年前
bk2204
Reply   •   1 楼
bk2204    4 年前

当你在HTTPS上推送时,会有一个请求,它是你推送的数据,还有一个响应,它包含一个状态码和一个正文(对于Git请求,它包含消息)。如果您推送数据,远程端接受数据,但从未成功发送响应,或者如果响应被网络问题或干预系统中断,那么Git无法知道您的请求是否成功。

在这种情况下,响应指示消息在读取边带响应的中间被中断,这意味着假设远程端确实完成了它的处理是不安全的。Git因此做了正确的事情,在这里失败了。

请注意,有一些可能的原因。如果你上传的是大量压缩不好的二进制文件,那么Git可能会合法地花费大量时间解包这些对象,并且可能无法及时发送边带数据包来保持连接。理想情况下,您不会在Git存储库中存储很多大型二进制文件,因为这对它们不是很好的用途,但您可以尝试SSH,使用keepalives,SSH可以让连接持续足够长的时间以完成连接。不过,您不应该将Git用作备份或归档解决方案,或者作为工件存储。

您的连接也可能确实存在一些网络问题(包括由代理、非默认防病毒或防火墙或TLS middlebox引起的问题),在这种情况下,您需要修复所述问题(或卸载或删除所述软件或设备)。有时联系也会减少。