平台
Linux
现象
git clone 'https://xxx/xxx/xxx.git'
failed: fatal: unable to access 'https://xxx/xxx/xxx.git/': gnutls_handshake() failed: Handshake failed
原因
git工具默认使用gnutls包进行网络加密传输,但在特殊情况下(如使用了代理服务器)gnutls会出现奇怪的问题,我们可以使用更稳定的openssl包来代替gnutils的功能。
参考链接:git - "error: gnutls_handshake() failed" when connecting to https servers - Ask Ubuntu
解决
??????此解决方案需要删除系统原有的git,请谨慎操作!
参考链接:How can I install git version 2.10 with openssl instead of gnu_tls for ubuntu 14 - Stack Overflow
删除原来的git(谨慎操作)。
找一个空白目录,执行wget命令下载脚本。脚本用于重新编译基于openssl的git工具。
脚本来源:paul-nelson-baker/git-openssl-shellscript: Shellscript to compile git with OpenSSL (github.com)
wget https://raw.githubusercontent.com/paul-nelson-baker/git-openssl-shellscript/main/compile-git-with-openssl.sh
?运行脚本。此时将依次开始下载依赖工具、下载git源码、编译git、测试git、安装git。脚本执行需要一段时间,可以去休息一会儿~
注:测试git功能的过程会花费较长时间,可以在执行脚本前先export?SKIPTESTS=YES以跳过测试过程,直接安装git。
chmod +x compile-git-with-openssl.sh
./compile-git-with-openssl.sh
当命令行不再滚动并且输出如下文本时,脚本执行完毕。重启命令行以完成git安装。
Make sure to refresh your shell!
在新打开的命令行中重新执行git clone,此时应当不再报错。
|