Git推送(github)错误:许多提议的解决方案不起作用(隐藏的大文件问题)



问题:

当尝试推送到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用户来说,这种替代方案很复杂,总体速度较慢(显然)

最新更新