当我试图逃跑的时候

git push origin master --force

我刚刚

Counting objects: 2649, done.
Delta compression uses up to 2 threads.
Compressing objects: 100% (1280/1280), done.
error: RPC failed; result=22, HTTP code = 413 | 116 KiB/s   
fatal: The remote end hung up unexpectedly
Writing objects: 100% (2504/2504), 449.61 MiB | 4.19 MiB/s, done.
Total 2504 (delta 1309), reused 2242 (delta 1216)
fatal: The remote end hung up unexpectedly
Everything up-to-date

这和缺乏安全感有关吗?我尝试创建一个公钥作为致命的答案:远程端意外挂断并重新运行它,但它仍然不工作。我不是在用钥匙吗?如果是,我该如何使用它?


当前回答

这样做可以看到你正在使用的键:

ssh -vT git@github.digitalglobe.com

然后确保在你的构建中你在一开始就运行了这个:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

其他回答

罪魁祸首(就我而言): 高时延网络。

这本身不是一个答案,而更多的是一种观察,可以帮助其他人。我发现这个错误偶尔会在高延迟网络上弹出(例如,我必须使用卫星天线上网)。网络的速度很好,但延迟可能很高。注意:问题只存在于某些场景,但我还没有确定是什么模式。

临时缓解: 我换了网络——我换到了一个更慢,但延迟更低的蜂窝网络(我的手机用作热点)——问题消失了。请注意,我只能周期性地这样做,因为我的手机连接也是间歇性的。再加上带宽的使用增加了成本。我也很幸运,我有这样的选择。不是每个人都这样。

我确信在某个地方有一些配置设置使git -或ssh或curl或任何先超时的东西对这样的网络更宽容,但我不知道它是什么。

对开发商的呼吁: 这类问题对农村人口来说是一个持续的问题。当您设计系统、工具和应用程序时,请考虑我们。谢谢你!

我在上传一个大型回购时也遇到过类似的错误,“致命:远程端意外挂起”,没有任何进一步的细节。

在做了大量研究之后,我是这样做的:

使用SSH代替HTTPS并不能解决问题。 增加http。postBuffer增量到一个很大的值,仍然是no 运气。 我想这可能是因为大文件在 回购(因为这是从perforce新迁移的回购),所以我使用LFS重新创建了回购,将largeFileThreshold设置为40m,这大大降低了回购大小(从3.5G到500M)。 我原以为这样就能解决问题,但令我吃惊的是,我还是犯了同样的错误。

最后,我突然想到,我可能正在使用一个旧的git客户端,因为我没有看到额外的错误消息。 我把git客户端升级到最新版(2.20.1),瞧,错误消失了!

上面的答案对我都没用,但下面的答案对我有用。

从项目中删除.git/ 克隆远程回购到一些新的位置,如你的桌面: Git克隆https://github.com/foo/bar.git 将.git/从新位置移动到旧位置 重新提交并推动您的更改

当我把远程分支名称拼错时,我得到了这个错误

下面的命令可能会帮助你…

git config --global http.postBuffer 1048576000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999