git push 报错 Empty reply from server 或 Failed to connect to github.com port 443: Time out
问题出现
记一次和github
的斗智斗勇。
报错信息
fatal: unable to access ‘https://github.com/username/resposity.git/’: Failed to connect to github.com port 443: Timed out
fatal: unable to access ‘https://github.com/username/resposity.git/’: Empty reply from server
问题说明
情况一 网站登录情况
登录github网站时好时坏(用代理才可以登录),有时候显示没有响应,但是电脑以外的ipad登录顺利。(后来变成电脑和手机都无法等上,另有解决方法在后面)
情况二 本地使用情况
本地使用 git clone / git push 报前述错误,代理也不行。
情况三 网上解决方法测试
去网上寻求解决方法
三种方法:
- 检查是否有代理,若有取消:
git config --global --unset http.proxy
具体可见:
git clone出现 fatal: unable to access 'https://github.com/…'的解决办法(亲测有效)
知乎:fatal: unable to access;Failed connect to github.com:8087;- 改换ssh登录
- 注释掉 hosts下与github.com有关内容
具体可见:
解决git push时出现Failed to connect to github.com port 443: Timed out’
方法使用结果:
- 方法一:本地没有代理取消代理不起作用
- 方法二:比较麻烦没有尝试
- 方法三:打开了 C:\Windows\System32\drivers\etc\hosts 文件发现,确实有 github.com 相关内容,注释掉。成功push,但是过了一会儿又报错。
方法三只成功了一下下,不能判定是否是巧合,但是突然想起来
- hosts文件的作用:解析IP地址和主机名
- 我为什么会在hosts文件中设置github相关内容:为了解决曾经raw.githubusercontent.com 无法连接,网站上图片显示不出来的问题
于是我灵光一现,进行了如下尝试:
- 先去IP地址搜索网站上搜索了github.com最新的IP地址 https://www.ipaddress.com/
- 发现此时是
发现和我原来hosts文件中映射的github.com的地址已经不一样了。 - 于是,我将新的IP地址填入hosts文件中。
- 尝试 git push。
- 成功。
hosts文件的修改
注意:需要添加读写权限 win10修改host文件的方法
新的问题
好景不长,在上面push成功后,很快我又push失败了。
探索发现
根据之前经验多次尝试后(比如直接用查询到的IP地址登录网站),我发现我登不上去还是github
自身的问题。
- 当我可以用IP地址直接登录网站时,将IP地址映射添加进
hosts
文件才是有效的。- 当github可以直接登录不需要映射,将
hosts
文件中有关内容注释掉才是合适的。- 当上述都登不上时,改
hosts
无效。
问题解决
重新思考情况,我发现开代理的情况下能登上网页版,但不能使用命令行。
报错:
fatal: unable to access ‘https://github.com/***/***.git/’: Unknown SSL protocol error in connection to github.com:443
询问室友她能否登上,得到开代理可以用的回答,开始寻找怎么在开代理的情况下使用命令行。
终于找到:
GitHub 无法连接问题
即:给 git 命令开代理。
但是输入上述文章中命令后,报错:
PCMV-Detector> git config --global http.proxy http://127.0.0.1:1087
PCMV-Detector> git push
fatal: unable to access ‘https://github.com/***/***.git/’: Failed to connect to 127.0.0.1 port 1087: Connection refused
再次思考,发现端口和我开的代理端口不同,修改命令端口为代理端口1080
:
顺便记录下可以使用git config --global -e
命令修改文本。
成功。