Error: RPC 失败; curl 92 HTTP/2 stream 0没有完全关闭: PROTOCOL_ERROR (err 1)

Error: RPC 失败; curl 92 HTTP/2 stream 0没有完全关闭: PROTOCOL _ ERROR (err 1)

我在写“ git”的时候试着“ push”。 但是,下面的消息并不能解决问题。

enter image description here

227366 次浏览

这听起来像是您正在使用的远程服务器或某个中间盒(例如,一个代理)没有正确地使用 HTTP/2协议。您可以要求远程服务器或中间盒的所有者修复他们的服务器,或者强制使用 HTTP/1.1来修复这个问题。

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

您可以使用 http 版本1.1强制 git

git config --global http.version HTTP/1.1

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

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

您可以尝试使用

git config --global http.postBuffer 157286400

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

对于我使用 nginx 后面的 bitbucket 的情况,禁用代理请求缓冲是答案:

server {
listen 443 ssl http2 default_server;
...
proxy_request_buffering off;


# These are also relevant:
proxy_read_timeout      600;
client_max_body_size    0;

XCode 11.4.1

增加 git 缓冲区的大小对我来说很有用

git config --global http.postBuffer 524288000

工作方案:

首先将 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

在我的例子中,我必须将原点重置为 ssh,而不是 http/https:

git remote set-url origin git@your-git.com

你可以使用以下方法查询你的来源:

git remote -v

对我有所帮助

server {
listen 443 ssl http2 default_server;
...
location / {
...
proxy_request_buffering off;
...
}
}

在我的例子中,我在服务器(Gitlab)上更改了密码,但没有在本地 git 凭证中更改密码。

对我来说,这是由于在我的 nginx 配置中忘记了 return 444;。在 HTTP 2.0下,连接终止导致了这个误导性错误消息

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

git config --global http.version HTTP/1.1
git push
git config --global http.version HTTP/2

这对我来说不起作用,但是在把 HTTP的版本从 2降级到 1.1之后起作用了:

$ git config --global http.version HTTP/1.1

在这个改变之后,推送成功了,我再次将 HTTP 版本改为2:

$ git config --global http.version HTTP/2

在大多数情况下,增加缓冲区大小是可行的。

git config http.postBuffer 524288000

这招对我很管用。

使用

git config --global http.version HTTP/1.1

应该作为最后的选择。

在 Windows 机器上使用 gitbash 终端(如果这些信息对您有任何帮助的话)。

在大多数情况下,git config http.postBuffer 524288000应该起作用。

在我的示例中,我在 yarn.lock/package-lock 中进行了大量更改(我更改了许多包,因此有许多行被更新)。Json 文件。由于通常不需要它,删除它可以消除错误。 因此,如果您正在使用 Javascript,也可以尝试这样做

git config http.postBuffer 524288000

这是最新的,应该能解决你的问题

对我来说,这是有效的:

git checkout --orphan newBranch
git add -A  # Add all files and commit them
git commit -am "Clean Repo"
git branch -D master  # Deletes the master branch
git branch -m master  # Rename the current branch to master
git push -f origin master  # Force push master branch to github

感谢: https://panjeh.medium.com/cleaning-up-git-github-repository-without-deleting-git-directory-c86b7415b51b

然而,我的问题稍有不同,与“包已经打包”的信息与 RPC: : HTTP/2流没有关闭干净的消息

如果您的错误与试图推送大文件有关(在我的例子中有这个错误消息) ,运行:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {your full path file name}'

Https://medium.com/@marcosantonocito/fixing-the-gh001-large-files-detected-you-may-want-to-try-git-large-file-storage-43336b983272

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

对我来说,答案很简单

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

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

错误:

推进失败 枚举对象: 44,完成。使用多达12个线程的 Delta 压缩 RPC 失败; curl 92 HTTP/2 stream 0没有完全关闭: CANCEL (err 8)远程终端意外挂起 Total 30(Delta 18) ,重用0(Delta 0)远程终端意外挂起

enter image description here

我也经历过类似的情况,我试过了

git config --global http.version HTTP/1.1
git config --global http.postBuffer 157286400
git config --global http.postBuffer 524288000

甚至,

git config --global core.compression 0

failed example

但是,没有什么改变。我有两个文件夹有这个错误。一个大小为10 MB,一个大小为65 MB。

终于。 我试过用光纤连接。

worked proof

所以,是的。尝试一个不同的,更高的速度连接。也许它会工作。

祝你好运!

遵循这里一些人的建议:

git config http.postBuffer 524288000
git push

结果导致错误:

remote: error: See http://git.io/iEPt8g for more information.
remote: error: File public/img/layout/group-photo.psd is 184.91 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.

所以在我的例子中,这更多的是一个文件问题,而不是网络连接问题。 将大文件移出项目,继续提交并推送整个过程。

不要忘记在你的 Github 帐户中添加一个 SSH 密钥,这就是导致我错误的原因。

具有讽刺意味的是,对我来说,结果是糟糕的互联网连接-我尝试了以上所有方法,没有一个奏效,然后我做了一个速度测试,发现我有100 + Mb 的下载,但只有0.x Mb 的上传时间,由于一些 wifi 问题。我修好之后,问题就消失了。

还要检查你是否使用了 VPN, 我在使用 VPN 时出现了错误,我决定关闭我的 VPN,然后再试一次, 然后就成功了

对我来说,这个问题很有用: git push --set-upstream origin main

在这种情况下,唯一的问题是互联网连接不好,没有别的。我通过切换到更好的互联网连接来修复它。 enter image description here

对我来说,我认为这是我的互联网,所以我尝试了一个更好的互联网,但错误仍然存在。直到我找到解决办法:

基本上,我必须复制到另一个分支的文件,并删除其他和重命名当前的一个。清理回购。

git checkout --orphan newBranch
git add -A  # Add all files and commit them
git commit -am "Clean Repo"
git branch -D master  # Deletes the master branch
git branch -m master  # Rename the current branch to master
git push -f origin master  # Force push master branch to github

我住在农村,有移动宽带,这是基于一个非常低的4g 信号,我得到两个信号酒吧在一个好的一天。我推送的文件大小只有39mb,远远低于 github 的最大文件大小,我也推送了更大的提交同一回购从这个位置,所以它没有意义的文件大小造成的问题。我尝试了这里提到的所有方法,更改为 HTTP1,并且更改 postbuffer 没有帮助。

经过几个小时的摸索之后,我重新启动了路由器,并能够将提交推送到 github。

希望这能帮助那些网络连接也很糟糕的人。

使用不同的互联网接入为我解决了这个问题,我从我的主 wifi 和连接到我的手机,它工作。

如果你是 推送大型文件,你可能会得到这个错误只是使用 大文件存储

可能是因为信号强度太低。我也曾在开源存储库中推送过大量文件,但没有遇到这个错误。除了缓冲区大小,它在很大程度上取决于信号强度。你可以尝试再按2到3次或者重启你的路由器,如果还是不行,试试下面的命令:

git config http.postBuffer 524288000
git push

如果这些都没有帮助,也许您可以尝试使用 ssh 连接到您的 git 存储库。

如果使用 Bitbucket,可以将 ssh 键添加到存储库设置中,这样就可以获得 ssh 访问权限。 在 Github 上,我认为默认情况下应该有 ssh 访问权限。尝试使用 ssh 而不是 https 连接到存储库,您可以通过更改 git 的远程 URL 来实现这一点。

最流行的答案之一是:

git config --global http.postBuffer 157286400

不要盲目地使用 ,因为对于大多数推送问题,提高这个值通常不是一个有效的解决方案,但是可以显著增加内存消耗,因为整个缓冲区甚至被分配给小的推送(来自 Git 文档)。

首先检查你是否有 size >100 MB文件。如果有,那么有一个更适合你的问题的解决方案。

解决方案 : Git-LFS用于对大文件进行版本控制。

Git 大文件存储(LFS)替换大文件,如音频 示例、视频、数据集和 Git 中带有文本指针的图形, 同时将文件内容存储在远程服务器上,如 GitHub.com 或 GitHub 企业版。

你可以在 Git-lfs上看到这个很好的教程,它会回答你大部分的后续问题。

切换到移动互联网或更改互联网连接。 这是由于网络问题而发生的一段时间。

我尝试了所有的方法,但没有工作。

原来是我的网络问题,只要断开连接,然后连接你的无线网络,它就会工作。

这就是我得到的错误。

enter image description here

简单的解决方案是改变你的互联网网络临时例如使用你的移动热点,并在你做了推,你可以回到你当前的网络。

这个问题可能发生在 pull、 push 或甚至克隆命令中。原因可能是您的网络设置相关的数据包大小设置,缓冲区大小和..。

您实际上可能正在推送具有较大规模的数据。我有相同的错误,然后我更喜欢使用 git LFS 和它的工作。

只要在提交之前取消跟踪该特定文件(大文件)。

git rm --cached "<file_name>

然后推剩下的文件,然后使用 git LFS上传大尺寸的文件。了解如何使用 git LFS 参考这个上传。

git config --global http.postBuffer 524288000 你可以增加你的缓冲区大小,它为我工作

我也遇到过这种情况,我刚刚换到另一个移动热点,它对我很有用。

断开你的虚拟专用网,再试一次。这就是为什么我解决了这个问题。

我通过更改工作笔记本电脑上的无线域名解决了这个恼人的问题。