Git拉取/推送错误: RPC失败; result=22, HTTP code = 408

36

我是GIT的新手,正在使用Git 1.7.9.5版本。

我正在处理存储在Github上的项目。有时从github推送和拉取代码时,一切都正常,但有时会出现错误。

错误:RPC失败;result=22,HTTP代码=408

致命错误:远程终端意外断开

我不知道出了什么问题。如果有人能为我建议可能出现的问题,那就太好了。


1
尝试从另一个 IP 地址进行相同的操作。 - gravetii
@gravetii,我在办公室只有网络可用。尝试使用其他IP地址会出现什么情况?这是因为互联网问题吗?我正在使用Ubuntu 12.04 LTS。 - Raj
1
“fatal: The remote end hung up unexpectedly” 错误通常是由于与 git 无关的网络问题引起的。你说“有时候 push/pull 能够工作,有时候不能”,这证实了这个理论。 - user456814
@Cupcake 但是当我遇到错误时,同时检查了一下网络,似乎网络正常。有什么办法可以绕过这个问题,比如增加拉取超时时间或其他方法? - Raj
1
当你的网络连接慢且项目很大时,这也会发生。你可以尝试推送一个小项目进行测试。如果这个小项目能成功推送,那么你可以在网络连接良好时再尝试推送。 - undefined
11个回答

49
问题是由于git/https缓冲设置引起的。为了解决这个问题,请运行下面的命令:
git config http.postBuffer 524288000

请再次尝试进行git push操作。

我仍然面临着相同的问题。 - Ram Thota
1
@RamThota,你能检查一下 Git 版本吗?还能看看是不是同一个错误,还是不同的错误? - shiminsh
git 版本 2.19.1.windows.1 - Ram Thota
git 版本 2.31.1.windows.1 - saber tabatabaee yazdi
请注意,Git FAQ指出这个选项并不是解决所有推送问题的通用方法,只有在你的网络或代理非常糟糕的情况下才能起作用。如果这种方法奏效,通常意味着你的问题实际上是间歇性的,再试一次可能会成功。然而,这样做会导致每次推送都分配大量内存。 - bk2204
显示剩余2条评论

15
  1. 增加http传输使用的缓冲区大小:文档

    git config http.postBuffer <Size_in_Bytes>

    git config http.postBuffer 500000000

  2. 增加超时时间。如果传输速度小于http.lowSpeedLimit,Git会中止传输,请参阅http.lowSpeedTime:文档

    git config http.lowSpeedTime 600

  3. 重试多次推送操作,因为网络连接的临时故障可能会导致此问题。


http.postBuffer在我的Win10机器上有效,但请检查文档,因为它说:“通常提高此值并不能解决大多数推送问题,但可能会显著增加内存消耗,因为即使是小的推送也会分配整个缓冲区。”- 你可能想稍后将其设置回1MB。 - George Birbilis

5

我有一个文件超过了100MB(Github的限制),这导致了我的问题。检查你提交的文件,看看是否有任何大于100MB的文件。


这个问题可能有助于解决。我在这里发布了我的解决方案。 - undefined

3

你可以按照以下步骤进行操作!

增加 git 缓冲区

git config http.postBuffer 524288000

更改您的终端

如果您使用 vscode 终端,您可以切换到电脑上的 终端,例如 Windows 上的 PowerShell。

检查文件大小

Github 的默认最大限制是 100MB,请检查您的文件大小。

检查您的网络连接

尝试切换到另一个网络并重试。


2
更改网络解决了我的问题。

1
这种情况发生在你本地添加了一些“重文件”并提交后。
首先,删除这些文件。 使用git的“rebase”命令来合并提交。我们需要清除所有添加了这些文件的提交。
解决冲突并成功创建新的提交后。
现在你可以将这个新的提交推送到代码库中。

0

我最近也遇到了这个问题,@shiminsh的解决方案“对我有用”,查看文档{查看man git-config的输出},我们有:

http.postBuffer

当向远程系统POST数据时,智能HTTP传输使用的缓冲区的最大大小(以字节为单位)。 对于大于此缓冲区大小的请求,使用HTTP / 1.1和Transfer-Encoding:chunked以避免在本地创建大型包文件。 默认值为1 MiB,对于大多数请求足够。

不过,我想知道,0.5 GBytes左右的限制是否有点过分了...! 我在Debian Wheezy Linux平台上使用Git版本1.7.10.4,但我怀疑这与此问题无关。 这个设置基本上是在说“对于几乎所有发送到远程系统的内容,请使用HTTP / 1.1和Transfer-Encoding:Chunked,并且不要担心在本地创建大型包文件”。


-1
在第一步中,运行以下命令:
git config http.postBuffer 524288000

然后运行这个命令:
git config --show-origin --get-all http.postBuffer

然后:

git config —-global --unset http.postBuffer
git config —-local --unset http.postBuffer

最后:

git reset --soft HEAD~1

-2
尝试使用Github桌面版进行推送/拉取,这解决了我的问题。

-2

尝试使用VPN并连接到美国的服务器,这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接