在使用 hexo 部署博客常常遇到以下错误:

fatal: unable to access 'https://github.com/xxx/autowrite.git/': 
OpenSSL SSL_read: Connection was reset, errno 10054

或者

fatal: unable to access 'https://github.com/xxx/autowrite.git/':
Failed to connect to github.com port 443: Timed out
Empty reply from server

因为 git 在拉取或者提交项目时,中间会有 git 的 http 和 https 代理,但是我们本地环境本身就有 SSL 协议了,所以取消 git 的 https 代理即可,不行再取消 http 的代理。

后续
原因还有一个,当前代理网速过慢,所以偶尔会成功,偶尔失败。

可以这样解决:

在项目文件夹的命令行窗口执行下面代码,然后再 git commit 或 git clone
取消 git 本身的 https 代理,使用自己本机的代理,如果没有的话,其实默认还是用 git 的

//取消http代理
git config --global --unset http.proxy
//取消https代理 
git config --global --unset https.proxy

但是这样有时候却不能奏效,这种方法时好时坏,有可能是由于本地没有代理,导致取消代理不起作用,可以通过修改本地 hosts 文件,来直接连接对你自己来说 github.com 最新的 IP 地址。

当然这种方法依旧不稳定,探索发现

根据之前经验多次尝试后(比如直接用查询到的 IP 地址登录网站),我发现我登不上去还是 github 自身的问题。

1. 当我可以用 IP 地址直接登录网站时,将 IP 地址映射添加进 hosts 文件才是有效的。
2. 当 github 可以直接登录不需要映射,将 hosts 文件中有关内容注释掉才是合适的。
3. 当上述都登不上时,改 hosts 无效。

所以重新思考情况,我发现开代理的情况下能登上网页版,但不能使用命令行,所以就得寻找怎么在开代理的情况下使用命令行。

即:给 git 命令开代理。

git config --global http.proxy http://127.0.0.1:7890

这里的 7890 为你代理软件的端口,由于我的 clash 端口为 7890,所以设为这个,具体取决于你那边情况。