Linux服务器使用git clone命令时报错的解决方案

在往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
Linux服务器使用git clone命令时报错的解决方案_第1张图片
因为sources.list中,默认将deb-src注释掉了,我们需要打开它然后取消注释

sudo vim /etc/apt/sources.list

打开如下图,将全部 deb-src行取消注释。这些都是下载源的网址。下图中还没有完全取消注释。
Linux服务器使用git clone命令时报错的解决方案_第2张图片
然后依次执行下列句子让之前的修改生效:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install build-essential

执行第二句时,会弹出选择,选保持当前的,输入N:
Linux服务器使用git clone命令时报错的解决方案_第3张图片
再次输入sudo apt-get build-dep git时不会报错了:
Linux服务器使用git clone命令时报错的解决方案_第4张图片
回到一开始,开始执行后面的

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网页,可以看到项目上传成功。

你可能感兴趣的:(项目笔记,git,linux,服务器)