Git 在推送提交到 github 时失败

我在我的笔记本电脑上克隆了一个我托管在 github 上的 git 回购。我成功地向 github 推送了几个提交,没有出现任何问题。然而,现在我得到了以下错误:

Compressing objects: 100% (792/792), done.
error: RPC failed; result=22, HTTP code = 411
Writing objects: 100% (1148/1148), 18.79 MiB | 13.81 MiB/s, done.
Total 1148 (delta 356), reused 944 (delta 214)

从这里它只是挂起来,我最后不得不 CTRL + C回到终端。

153040 次浏览

看起来像是服务器问题(即“ GitHub”问题)。
如果你看一下 这根线,它可能发生在 git-http-backend得到一个损坏的堆时(因为它们是 刚刚就位智能网站支持...)
但无论实际原因是什么,也可能与近期的 一个 GitHub 文件服务器中的零星中断有关。

您还能看到这个错误消息吗? 因为如果能看到:

  • 检查您的本地 Git 版本(并升级到最新版本)
  • 报告为 GitHub 漏洞

注意: 对于我们这些使用基于身份验证的企业防火墙代理的人来说,智能 HTTP 支持非常重要!

从现在开始,如果您通过 http:// URL 克隆一个存储库,并使用 Git 客户机版本1.6.6或更高版本,Git 将自动使用更新、更好的传输机制。
然而,更令人惊奇的是,您现在可以推翻那个协议并克隆私有存储库。如果您访问一个私有存储库,或者您是一个合作者并且想要推式访问,您可以将您的用户名放在 URL 中,当您尝试访问它时,Git 将提示您输入密码。

老客户端也会回归到老的、效率较低的方式,所以不会出现任何问题——只是新客户端应该工作得更好。

因此,请确保首先升级您的 Git 客户机。

我也遇到过同样的问题,我认为这与你想要推销的回购文件的大小(编辑过的文件或者特定文件的大小)有关。

基本上,我能够创建新的回购协议,并推动他们到 github。但现有的一个不会工作。

HTTP 错误代码似乎支持我,它是一个“所需长度”错误。因此,也许它太大,计算或大,最大。谁知道呢。

剪辑

我发现问题可能是 文件很大,我有一个更新 即使我有,也不会推 成功的推进到那一点。 提交中只有一个文件 但碰巧是1.6米

因此,我添加了以下配置更改

git config http.postBuffer 524288000

允许最大文件大小为500M 和 那么我的推动起作用了,也许是的 这是最初的问题 在 http 上推出一个大的回购协议 规定。

结束编辑

我让它工作的方法(在修改 postBuffer 之前进行编辑)是加密我的 repo,将它复制到一台可以通过 ssh 执行 git 的机器上,然后将它推送到 github。然后,当您尝试从原始服务器执行推/拉操作时,它应该能够通过 https 工作。(因为它的数据量比最初的推送要少得多)。

需要推送的问题主要是因为需要推送的文件的大小。我试图推送一些只有2mb 大小的库,然后推送的结果也是 RPC 出错。该线路是4兆比特每秒,工作正常。后来的一些尝试使我成功了。如果出现这样的错误,等待几分钟,并继续尝试。

我还发现,如果 github 出现故障或者网络变得不稳定,就会出现一些 RPC 故障。

因此,在一些间歇后继续尝试是唯一的选择!

在这些情况下,如果 https 卡住了,可以尝试 ssh。

您也可以尝试将缓冲区大小增加到一个天文数字,这样您就不必再担心缓冲区大小了 Git 配置 http.postBuffer 10000000

如果这个命令没有帮助

Git 配置 http.postBuffer 524288000

尝试将 ssh 方法更改为 https

git remote -v
git remote rm origin
git remote add origin https://github.com/username/project.git

我试图推送到我自己托管的 bonobo-git 服务器,但没有意识到,http.postbuffer 意味着项目目录..。

所以对于其他困惑的人来说:

为什么?在我的例子中,我有大的带资产的 zip 文件和一些推送的 PSD ——我猜对于缓冲区来说已经很大了。

如何执行这个 http.postbuffer: 在项目 src 目录中执行该命令,该目录位于。Git 文件夹,不在服务器上。

请注意,将创建该缓冲区大小的大型临时(块)文件。

注意: 只需检查最大的文件,然后设置缓冲区。