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 拉取成功

猜你喜欢

转载自blog.csdn.net/u014608280/article/details/115002494