gnutls_handshake() failed: Error in the pull function
作者:互联网
执行 git submodule update --init --recursive github上拉取工程子模块,出现如下错误
尝试各种解决方法没有解决:
1、配置代理(尝试无效)
设置代理
git config --global http.https://github.com.proxy http://127.0.0.1:7890
git config --global https.https://github.com.proxy https://127.0.0.1:7890
#7890为代理端口
取消代理配置
git config --global --unset http.proxy
git config --global --unset https.proxy
查看代理配置
git config --global http.proxy
git config --global https.proxy
查看全部配置
git config --global -l
2、安装openssl(尝试无效)
得到问题的原因,它是gnutls
包。它在代理背后很奇怪。但是openssl
即使在弱网络中也能正常工作。所以解决方法是我们应该用openssl
编译git
。为此,请运行以下命令:
sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev
sudo apt-get build-dep git
mkdir ~/git-openssl
cd ~/git-openssl
apt-get source git
dpkg-source -x git_1.7.9.5-1.dsc
cd git-1.7.9.5
(请记住将1.7.9.5
替换为系统中实际的git版本。)
然后,编辑debian/control
文件(运行命令:gksu gedit debian/control
)并将所有libcurl4-gnutls-dev
实例替换为libcurl4-openssl-dev
。
然后构建软件包(如果测试失败,可以从文件debian/rules
中删除TEST=test
行):
sudo apt-get install libcurl4-openssl-dev
sudo dpkg-buildpackage -rfakeroot -b
安装新包:
i386:sudo dpkg -i ../git_1.7.9.5-1_i386.deb
x86_64:sudo dpkg -i ../git_1.7.9.5-1_amd64.deb
3、升级git到最新版本(尝试无效)
4、让git忽略ssl证书错误 (尝试无效)
git config --global http.sslVerify false
5、更改git 地址https 为git 协议
vi .gitmodules
将url地址https改为git
例如:https://github.com/mfontanini/cppkafka.git
改为 git://github.com/mfontanini/cppkafka.git
然后执行git submodule sync 同步配置
git config -l 查看配置没问题
执行git submodule update --init --recursive 拉取成功
标签:function,pull,handshake,git,--,global,openssl,https,config 来源: https://blog.csdn.net/u014608280/article/details/115002494