在往GitHub上上传项目时,使用git clone xxxxx.git时候报错:
“gnutls_handshake() failed: the TLS connection was non-properly terminated”
由系统的 git 默认使用的 libcurl4-gnutls-dev 造成,可以使用openssl解决.
但是这个过程也很多坑。
依次执行:
sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev libcurl4-openssl-dev
sudo apt-get build-dep git # 报错了
mkdir git-openssl && cd git-openssl
sudo apt-get source git
执行到第三句sudo apt-get build-dep git
又报错: you must put some 'source' URIs in your sources.list
因为sources.list中,默认将deb-src注释掉了,我们需要打开它然后取消注释
sudo vim /etc/apt/sources.list
打开如下图,将全部 deb-src行取消注释。这些都是下载源的网址。下图中还没有完全取消注释。
然后依次执行下列句子让之前的修改生效:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
执行第二句时,会弹出选择,选保持当前的,输入N:
再次输入sudo apt-get build-dep git
时不会报错了:
回到一开始,开始执行后面的
mkdir git-openssl && cd git-openssl
sudo apt-get source git
要是再报错就按照这个帖子
但是也不管用,后面也会有报错,文件打不开什么的,第二天再次使用git clone
时就没报错了。
感觉最重要的是把source.list
修改,里面都是下载源,被注释了就会影响服务器连接Git。
另外后面往GitHub上发布项目时,在执行git push origin master
时如果报错的话,用git status查看,是否有下面报错:
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
意思是本地仓库有一个提交,比远程仓库要先进一个commit
. 需要先把这个commit
提交到远程仓库。
我直接:git push origin main
即把项目上传到 main 分支中。
然后刷新GitHub网页,可以看到项目上传成功。