Git:错误:RPC 失败; curl 92 HTTP/2 流 0 未完全关闭:PROTOCOL_ERROR (err 1)

问题描述 投票:0回答:2

请不要在未阅读完整问题的情况下将其标记为重复项。

当我尝试将代码推送到我们的存储库时,出现以下错误:

我尝试在网络上搜索这个问题,发现了令人惊叹的资源,但没有确切的解决方案。有很多类似的问题,但我没有找到明确的讨论或正确的解决方案。

我提到了这个问题。 我还研究了那些提供相应答案的答案和参考文献。

我按照这个answer的建议增加了缓冲区大小,但对我不起作用。

我按照这个answer的建议将HTTP版本从HTTP/2降级到HTTP/1.1,它对我有用。

我提到了一条评论,他提到为什么我们要将 HTTP 版本从 HTTP/2 降级到 HTTP/1.1。我不明白他的评论。下面是他的评论。

在回复有关降级到 HTTP/1.1 的问题时,OP 发布的错误消息指出了 HTTP/2 的问题; OP 无法控制的东西(代理、GIT 服务器等)很可能无法与 HTTP/2 很好地配合。在这个问题得到解决之前,降级到 HTTP/1.1 是一个有效的解决方法。

所以我的问题是

  1. 为什么我们要把HTTP版本从HTTP/2降级到HTTP/1.1?
  2. 为什么增加缓冲区大小解决方法并不适合所有人?
git http gitlab buffer git-push
2个回答
5
投票

所以我的问题是

  1. 为什么我们要把HTTP版本从HTTP/2降级到HTTP/1.1?

我们不应该——但请参阅下文。

  1. 为什么增加缓冲区大小解决方法并不适合所有人?

这应该也是没有必要的。

这里可能存在几个不同的问题,但如果您的网络连接从根本上来说是健全的(并非全部如此),那么 HTTP 或 HTTPS 协议问题的常见来源是某种中间件盒,例如试图阻止访问未经批准的过滤器主机,过滤不正确。也就是说,您尝试直接连接到,例如,

github.com
,但不是连接到
github.com
,而是连接到某个公司服务器。企业服务器检查 Web 请求,决定是允许还是拒绝它,并在决定允许后,与 github.com 建立
自己的
连接,然后开始中继流量。

问题是这个进行中继的中间件服务器破坏了数据

正确的修复是修复或删除中间件服务器。其他任何事情都只是一种解决方法。如果电话中继接线员鲍勃总是告诉您苏珊不在办公室,即使她在办公室,您也不会再向鲍勃询问苏珊的情况。相反,您要求鲍勃将您与她的同事苏西联系起来。鲍勃现在将您连接到苏珊(她的名字显然也叫苏西),您就可以完成工作了。这并不意味着每个人都必须叫她苏西,事实上,只要鲍勃叫她苏西,你的朋友,他的电话通过弗雷德而不是鲍勃,不能要求苏西:那就赢了不和弗雷德一起工作。 由于计算机中继比混乱的电话接线员更复杂,因此使用

ssh://

URL 可能比使用

http://
https://
URL 更成功。但是任何
适合您
的解决方法,让您克服数据损坏问题,都可以适合您。它可能对其他人不起作用,但这无论如何都不是正确的解决方案。正确的解决方法是拆除或更换损坏的过滤器/继电器。


0
投票

要解决此问题,您需要使用 GitHub 上给出的 SSH 命令:

a)

git push <ssh url given on GitHub repo>

b) 但这需要添加公钥。单击存储库 SSH 部分中给出的链接:添加新的公钥

c) 现在为 Windows 用户打开:

C:/Users/<your system User for example Death is real truth>/.ssh

d) 现在复制

id_rsa.pub

的代码(公共SSH密钥文件数据)

e) 添加到 SSH 部分并保存,它会询问你的 GitHub 帐户密码,添加即可添加成功。

f) 现在第一个命令将完美运行。

© www.soinside.com 2019 - 2024. All rights reserved.