为什么在推送到GitHub时会出现错误:RPC失败;结果=52,HTTP代码=0致命错误:远程端意外挂断?

22

我在 github 上创建了一个新的存储库,想要推送一些文件。所以我像平常一样初始化仓库,并使用 git add . 命令将当前目录(也就是我的 java 项目文件夹,里面包括 binsrc 文件夹)添加到仓库中。然后我使用以下命令添加远程目录:

git remote add https://github.com/username/project.git

然后我进行了第一次提交:git commit -m "First Commit"

然后我输入git push -u origin master,但我得到了这个错误:

Counting objects: 63, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (60/60), done.
Writing objects: 100% (62/62), 16.98 KiB, done.
Total 62 (delta 15), reused 0 (delta 0)
error: RPC failed; result=52, HTTP code = 0
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

但是,如果我只添加一个文件并尝试提交单个文件,它可以工作。

发生了什么?为什么我不能提交整个Java项目?这是一个相当小的项目,只有214k。请帮忙!谢谢!


你在执行 git add . 之后,是否也会将整个项目提交到 Git 中? - random
是的,我提交了整个项目。所以现在GitHub挂了,我刚刚在Twitter上查看,其他人也遇到了同样的错误。我想知道这是否是他们的问题? - Nearpoint
1
尝试执行“GIT_CURL_VERBOSE=1 git push”命令并查看错误信息?https://confluence.atlassian.com/pages/viewpage.action?pageId=301663267 - Daviddd
9个回答

20

1
点赞!这很有用,可以避免一些浪费时间的事情。谢谢 - Shapi

16

如果您要推送的更改过大,也会出现此错误,这可能是由于您的HTTP post缓冲区太小引起的。

在这种情况下,解决方案是增加它,例如使用:

git config http.postBuffer 524288000

5
应该使用命令“git config --global http.postBuffer 524288000”。 - Michael P
1
嗨,Michael,这取决于您是想更改当前存储库的配置还是更改默认设置。如果您传递--global标志,则会将其写入用户目录中的.gitconfig文件。否则,它会写入特定于存储库的.git/config文件。 - Dughall
1
为什么不行?你是说Bitbucket不支持这个客户端配置吗?远程Git服务器断开连接有很多原因,缓冲区大小过小只是其中之一 - 尽管是常见的原因之一。 - Dughall
1
@Dughall 我在进行 git pull 时遇到了相同的错误。我尝试了这个命令 -git config http.getBuffer 524288000,但是它没有起作用。你有什么建议吗? - PHcoDer
@PHcoDer,无论你是拉取还是推送,都可能遇到相同的问题;有时,如果git无法更新您的配置,它可能会默默地失败。因此,我建议运行git config -list以确保您的缓冲区设置实际上是您所期望的。 - Dughall
如果结果不是您所期望的,很可能是权限问题阻止了git更新配置文件。尝试以管理员身份运行以更新您的配置。如果结果符合您的预期,则必须有其他原因导致连接中断。 - Dughall

11

我尝试通过http克隆/获取Bitbucket仓库时遇到了这个问题。原来仓库太大了(超过1GB),因此Bitbucket返回以下错误:

error: RPC failed; result=52, HTTP code = 0
fatal: The remote end hung up unexpectedly

我切换到SSH协议后,现在它能正常工作。之后,如果需要,您可以将远程设置回http版本,它仍将继续工作。


无法通过ssh使其工作,权限被拒绝错误。 - Jemshit Iskenderov
1
@JemshitIskenderov 你需要为你的Bitbucket账户配置一个SSH密钥。请参考这些说明来进行操作。 - Ferry Boender
这实际上是答案,即使其他人的赞数更多,如果你正在克隆一个巨大的仓库。 - Jesse Q
@JesseQ 我的回答实际上并没有回答原问题,因为他或她的存储库显然不是很大。但这是许多人遇到的相同错误,所以他们最终还是会来到这里。 - Ferry Boender
@FerryBoender 可能会解决原帖的问题,所以在我看来算是 +1。无论如何,它解决了我在一个大型代码库中遇到的问题,我想确保其他人也尝试一下。 - Jesse Q

11

现在它正在工作!我甚至没有改变任何东西。

'result=52' 这种错误是github本身出现的错误。Github.com网站当时出了问题,当我尝试上传代码时就收到了这个错误。现在该网站已经恢复正常,我可以像往常一样进行代码提交。


1
Bitbucket出现了相同的错误,但几分钟后恢复正常。 回应良好。 - calraiden

6

如果您的网络连接存在问题,也可能会发生这种情况。是的,我现在正在经历这种情况。:)


3
我试过这个:

$ git config --global --add core.compression -1
$ git clone https://....

它可以正常工作。

(在这里找到)


3

这可能是由于以下原因之一:

原因

存在大文件(在我们的情况下为45MB)

为什么

大文件导致HTTPS超时

解决方法

使用SSH或删除大文件


0

我用了好几个小时才解决这个问题。我使用https时也遇到了同样的问题。另外:我无法通过ssh连接到bitbucket。

我使用Linux Mint 17.x,以下解决方案在ssh方面非常有效:

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1254085(bs - bentzy-sagiv的答案)

添加以下内容到/etc/sysctl.conf文件中:

net.ipv4.tcp_mtu_probing = 1

重启后,您应该在/proc/sys/net/ipv4/tcp_mtu_probing中看到值为“1”。

临时解决方法是:echo 1 > /proc/sys/net/ipv4/tcp_mtu_probing 警告:这将在启动时重置。

如果仍不起作用,也可以尝试使用值“2”。

(请参见https://thesimplecomputer.info/pages/adventures-in-linux-tcp-tuning-page2的说明)


0

对于 Bitbucket,我通过切换到 ssh 而不是 http 来解决这个问题。

  1. Avatar > Bitbucket 设置 中配置 SECURITY > SSH keys
  2. 将远程 url 从 https://... 更改为 git@...
    • 编辑 .git/config 文件 启动 git remote set-url origin git@...
  3. git push -u origin --all(注意:先执行 git add . 然后执行 git commit -m "intial commit"

基于 wintersolider答案


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