在使用 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,所以设为这个,具体取决于你那边情况。