Git声称,当原始用户按预期收到它时,它无法推送



我注意到我的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的二进制文件,我有很多这样的文件。有人能帮我解决这个问题吗?

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

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

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

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

最新更新