问题:
当尝试推送到GitHub存储库时,我收到以下错误:
error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)
fatal: the remote end hung up unexpectedly
请注意此消息的(错误8)部分
上下文
背景
我在GitHub上有一个私人存储库,我和合作者过去曾成功地克隆、提取和推送到该存储库。我们使用Rstudio和shell的组合来与git进行交互。
就在昨天,我的一位合作者指出他们无法推送,但将其归因于他们机构的防火墙/代理。然而,现在我无法从独立的互联网连接推送到存储库(见上面的错误)。
此存储库中最大的文件约为35MB,以前被拉/推送时没有出现问题。
其他stackoverflow示例
我已经完成了我的谷歌搜索,并参考了stackoverflow的这些相关问题和解决方案:
- 类似错误,但出现错误1
- 对上面提出的一些解决方案的解释
- 和我一样的错误,解决方案不起作用
尝试的解决方案
我尝试的第一个解决方案是增加http缓冲区:
git config --global http.postBuffer 157286400
这需要很长时间才能尝试,并且再次返回与上面相同的错误。此外,从git文档本身可以看出为什么这个解决方案可能不适合任何情况:git FAQ的外部链接。
我认为在这种情况下,连接在传输过程中被断开,但由于文件是在没有分块的情况下发送的,直到尝试写入所有更改之后才报告失败。
第二个提议的解决方案是下降到较低的http版本:
git config --global --unset http.postBuffer
git config --global http.version HTTP/1.1
这返回了一个带有不同的的新错误。
我尝试的第三种选择是将两种拟议的解决方案结合起来:
git config --global http.version HTTP/1.1
git config --global http.postBuffer 157286400
这也需要很长时间来尝试(比如单独增加缓冲区),还会返回新的错误(单独降级http.version)。
初始情况
我现在有点不知所措。我看到一些评论说,创建一个新分支,去掉原来的主分支,并将新分支指定为主分支可能会奏效,但我不太愿意尝试,因为我不想在之前的提交中放松版本控制(一位评论人士说会发生这种情况)。
有新的解决方案吗?
最终情况-已解决
在写下所有这些的时候,我似乎已经找到了解决方案,然而,我想我无论如何都会发布它。
简而言之:我在几次提交之前就提交了大文件。虽然这些后来被添加到.gitignore中,但它们仍在回购历史中。因为它们是在早些时候添加的,而且我主要使用git的Rstudio接口,所以在最近的推送尝试中,我没有看到关于大文件的特定错误。
以下是解决此问题的资源:
- GitHub文档
- BFG Repo清洁器
- 备选方案
- 对于windows用户来说,这种替代方案很复杂,总体速度较慢(显然)