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

Sun*_*won 77 git push

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

我在写 'git' 时尝试了 'push'。但是,以下消息并不能解决问题。

在此处输入图片说明

小智 106

您可以使用 http 1.1 版强制 git

git config --global http.version HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

https://gist.github.com/daofresh/0a95772d582cafb202142ff7871da2fc

  • 为什么要降级 HTTP 版本?最终,我们将转向 HTTP2。 (10认同)
  • 还有一点要提的是:您可能不想包含“--global”标志,除非您始终使用同一个中央服务器。如果您使用多个服务器(例如 GitHub、BitBucket、GitLab 等),那么您可能需要逐个存储库设置此配置。 (7认同)
  • 这解决了 MacOSX 上的问题,“git config http.postBuffer 524288000”无法解决此问题。但@AbhishekSharma 的问题很好,为什么我们要降级 HTTP 版本。 (4认同)
  • 在回答有关降级到 HTTP/1.1 的问题时,OP 发布的错误消息指出了 HTTP/2 的问题;OP 无法控制的东西(代理、GIT 服务器等)很可能无法与 HTTP/2 很好地配合。在这个问题得到解决之前,降级到 HTTP/1.1 是一个有效的解决方法。 (3认同)
  • 这个版本命令解决了我的问题。我尝试了 post buffer 方法以及其他选项,例如在 git URL 中添加用户名,但这对我也没有帮助。 (2认同)

Abh*_*rma 39

您可能正在推送大于 postBuffer 大小的数据。

您可以尝试使用增加后缓冲区大小 git config --global http.postBuffer 157286400

供参考:https : //confluence.atlassian.com/bitbucketserverkb/git-push-fails-fatal-the-remote-end-hung-up-unexpectedly-779171796.html


Xys*_*Xys 32

简单的解决方案(之后恢复为 http 2):

git config --global http.version HTTP/1.1
git push 
git config --global http.version HTTP/2
Run Code Online (Sandbox Code Playgroud)

  • 为什么不直接为该存储库运行“git config http.version HTTP/1.1”?这样您之后就不需要将其设置回 HTTP/2。因为该更改仅适用于当前的 git 存储库。 (11认同)
  • 为什么建议返回http/2? (4认同)
  • 好主意@Xys。但是,“HTTP/2”可能是默认名称,而不是设置的配置名称。当 `git config --global http.version` 不返回任何内容时就是这种情况。在这种情况下,命令应该是 `git config --global http.version HTTP/1.1; git 推送;git config --global --unset http.version` 在任何一种情况下都能做正确事情的 bash 脚本留给读者作为练习! (3认同)
  • 在我的情况下不起作用 (2认同)

Pra*_*wad 27

Xcode 11.4.1

增加 git 缓冲区大小对我有用

git config --global http.postBuffer 524288000
Run Code Online (Sandbox Code Playgroud)

  • 对我来说没有任何效果 (3认同)

小智 25

我遵循了大部分答案,但没有解决我的问题。

就我而言,答案很简单

我在通过信号强度低、稳定性差、速度慢的ADSL宽带Wi-Fi网络推送GIT时遇到了这个错误。

然后,当我通过信号强度更大、稳定性更好、速度更高的光纤宽带Wi-Fi网络将其推送到GIT时,我能够非常成功地推送它。

错误:

推送失败 枚举对象:44,完成。使用最多 12 线程 RPC 的增量压缩失败;curl 92 HTTP/2 流 0 未完全关闭:CANCEL (err 8) 远程端意外挂起 总计 30 (delta 18),重用 0 (delta 0) 远程端意外挂起

在此输入图像描述

  • 如果您可以在问题中将该错误发布为***文本***而不是图像,那么对使用搜索引擎的人会更有帮助。考虑到此错误与问题中的错误不同,收到此错误的人可能仍然会到达并发现您的答案有帮助,但如果是图像,他们就无法做到这一点 (13认同)

Abh*_*ava 22

这对我不起作用。HTTP但在将版本降级21.1

$ git config --global http.version HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

进行此更改后,推送成功,我再次将 HTTP 版本更改为 2:

$ git config --global http.version HTTP/2
Run Code Online (Sandbox Code Playgroud)


小智 20

工作解决方案:

首先将 HTTP 版本更改为 1.1,然后推送,完成后更改回 HTTP2

$ git config --global http.version HTTP/1.1
After it push was ok and I have changed HTTP version to 2 again:
$ git config --global http.version HTTP/2
Run Code Online (Sandbox Code Playgroud)


Kam*_*gua 11

git config http.postBuffer 524288000
Run Code Online (Sandbox Code Playgroud)

这是最新的,应该可以解决您的问题


Dee*_*pak 6

大多数情况下git config http.postBuffer 524288000应该有效。

就我而言,我在yarn.lock/package-lock.json 文件中进行了大量更改(我更改了很多包,因此更新了很多行)。由于通常不需要它,因此删除它可以使错误消失。所以如果你正在使用 Javascript,你也可以尝试这个


bk2*_*204 5

听起来您正在使用的远程服务器或某些中间件(例如代理)没有正确使用 HTTP/2 协议。您可以通过要求远程服务器或中间件的所有者修复其服务器来解决此问题,也可以强制使用 HTTP/1.1。

如果要强制使用HTTP/1.1,可以将http.version配置选项设置为HTTP/1.1http.<url>.*也可以按照手册页中的部分所述按 URL 进行设置git-config


小智 5

在大多数情况下,增加缓冲区大小就可以了。

git config http.postBuffer 524288000
Run Code Online (Sandbox Code Playgroud)

这对我有用。

用于

git config --global http.version HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

应保留为最后的选择。

在 Windows 计算机上使用 gitbash 终端(如果此信息对您有任何帮助)。