以下内容为自己的学习笔记,如需求转载,请声明原文链接 微信大众号「ENG八戒」mp.weixin.qq.com/s/cX2Vfl-zn…

执行 git 拉取,忽然报错:

> git pull --tags origin main
Connection reset by 172.16.1.40 port 22
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

更改 hosts 文件

有或许 github 网址已更新,隔一段时间或许会出现一次,经过 ping github 域名可验证此种原因

ping github.com

假如一直无回来或许超时就可确认的确是由于 github 网址已更新,DNS 无法正确回来 github 域名的 ip。

可经过修正体系目录下的 hosts 文件解决,hosts 文件内容直接指明域名与 ip 的映射联系。一旦某些拜访域名和对应 ip 被指定,就会直接跳过 DNS 的解析拜访指定 ip。

Windows 10 渠道:

C:WindowsSystem32driversetchosts

Linux 渠道:

/etc/hosts

经过下面的网页服务提供的查找功能可找到最新的域名 ip:

https://www.ipaddress.com/

比如笔者当时找到的两个域名和对应的 ip 地址:

140.82.112.3 github.com
151.101.1.194 github.global.ssl.fastly.net

将上面的内容直接复制粘贴到 hosts 文件结尾保存即可。当然你看到本文时,域名和 ip 的映射联系或许已经发生变化,所以主张从头查找域名对应的 ip 再采用。

改完 hosts 文件再次 ping 一下 github 域名看看,笔者顺畅经过。

从头增加信赖设备

另一个或许原因是后台把当时设备除掉出信赖设备,可经过切换库房拜访 URL 为 HTTP 的方法,触发 github 后台从头增加可信赖设备,增加时会弹窗提示,需求跟着提示操作。

Github 后台常常不可思议除掉我的信赖设备,不知道是不是由于我常常在多个设备之间切换拜访 Github 库房。

当时工程目录下,假如是 Linux 渠道,运用 git config 指令:

git config -e

上述指令会调用默认编辑器翻开当时工程 git 装备文件 ..gitconfig

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	ignorecase = true
[remote "origin"]
	url = git@172.16.1.40:xxxxx/test.git
	fetch =  refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

假如是 Windows 渠道主张直接用记事本翻开。

config 装备文件中的 url 字段指明长途库房的地址和拜访方法,当时装备为运用 SSH 衔接 git 库房,目标是修正为运用 HTTP 方法,如下

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	ignorecase = true
[remote "origin"]
	url = http://172.16.1.40:9000/xxxxx/test.git
	fetch =  refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

SSH 和 HTTP 的拜访地址都可以在 gitlab 或许 github 后台获取:

突发:ssh 拜访 Github 库房报错:Connection reset

改为运用 HTTP 方法后,原有的用户目录下的 .ssh 文件夹内容将无效而且不再需求。

再次执行 git 拉取

git pull --tags origin main
info: detecting host provider for 'http://172.16.1.40:9000/'...
info: detecting host provider for 'http://172.16.1.40:9000/'...
info: detecting host provider for 'http://172.16.1.40:9000/'...
From http://172.16.1.40:9000/xxxxx/test
 * branch            main       -> FETCH_HEAD
Already up to date.

成功。

修正为 HTTP 方法后第一次拜访长途 git 库房会弹窗提示需求输入拜访账户和暗码,假如已经翻开浏览器登录 github 后台则直接询问是否增加信赖该设备,点击信赖即可。视网络状况,弹窗提示或许需求等待一定时间,假如一直无反应则不妨多试几回,这个或许就是 HTTP 拜访方法的缺点了。