问题描述
我使用Ubuntu 16.04。当我想git push origin master时,我得到:错误:RPC失败; curl 56 GnuTLS接收错误(-12):收到TLS致命警报。致命:远程意外挂断致命:远程意外挂断一切up-to-date
最佳方案
要解决此问题:
用openssl而不是gnutls重建git解决了我的问题。
次佳方案
@harlequin接受的答案可能有效,但是我花了2个小时,无法从源代码构建git包。
但是,请检查以下链接,因为这对我有用。
The remote end hung up unexpectedly while git cloning
只需更新http发布缓冲区值
git config --global http.postBuffer 1048576000
第三种方案
看完您的帖子后,我只需通过以下方法解决
apt install gnutls-bin
第四种方案
如果您需要克隆或拉取,我有一个解决方法,问题出在存储库历史记录的大小上。如果您不希望以后再推送,它也可能会有所帮助。
只需使用--depth=[number of last commits]
检索最后的提交即可。
您可以在克隆时执行此操作,或者,如果在添加了远程功能的本地存储库中进行操作,则可以在提取时执行此操作。例如,仅检索(每个分支的)最后一次提交:
git clone repo --depth=1
# or
git pull --depth=1
更新:如果遥控器距离您太多了,那么当您尝试进行最后的更改时,问题可能稍后会出现,但是有太多问题,并且使用curl 56关闭连接。您可能必须使用git pull --depth=[number of commits ahead on remote]
,这很繁琐如果您正在使用非常活跃的存储库。
第五种方案
您可以设置一些选项来解决问题
在全局级别上都可以:(如果您使用clone
,则需要,不要忘记在之后重置)
$ git config --global http.sslVerify false
$ git config --global http.postBuffer 1048576000
或在本地存储库上
$ git config http.sslVerify false
$ git config http.postBuffer 1048576000
第六种方案
我也在使用基于Ubuntu
的系统(Mint mate 18),从github克隆大型仓库时遇到了类似的问题。
对我有用的简单解决方案是使用ssh协议而不是http(s)协议。
例如
git clone git@github.com:xxx/yyy.git
第七种方案
我也遇到了同样的问题,重新启动系统解决了它:)
第八种方案
尝试升级openssl
模块
我这样做解决了
sudo apt install openssl