Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Git声称当源站按预期接收到它时,它无法推送_Bash_Git_Github_Continuous Integration - Fatal编程技术网

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

Bash Git声称当源站按预期接收到它时,它无法推送,bash,git,github,continuous-integration,Bash,Git,Github,Continuous Integration,我注意到我的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 unexp

我注意到我的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,SSH可以让连接持续足够长的时间以完成连接。不过,您不应该将Git用作备份或归档解决方案,或者作为工件存储


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

相关:不幸的是,在谈话过程中,有时根本无法判断“电话过早挂断”是在握手告别时发生的。当这种情况发生时,无法区分“正常结束”和“提前终止”。Git可以插入自己的结论,如果Git这样做,并且挂断发生在该点之后(在正常连接挂断期间),而不是Git依赖于“正常挂断”状态结果,Git会知道一切正常,但Git不会。即使Git这样做,这也只是移动了故障变得神秘的点。所以你可能还是有同样的问题。唯一要做的就是跟踪网络连接本身为什么会这样做,这不是Git的事情,也不是GitHub的事情,这是一个网络的事情。啊,谢谢你的回答!由于这是在一个官方的Github运行程序上,网络问题可能不是原因,所以我想我必须将我的更改分成多个推送来解决这个问题。谢谢你的解释!小崽子,结果我昨晚找到了一个解决办法,把它忘了。添加git config--global http.postBuffer 524288000修复了这个问题。正如,这意味着您的网络上有东西坏了,所以我的答案是正确的。除非有什么东西破坏了您的HTTP请求,否则该选项不应该是必需的,也不会有任何效果。