GitHub 访问不了?教你几招秘籍

聊聊如何解决 GitHub 访问失败/缓慢的问题。

原因

由于 GFW 的原因,在国内访问 GitHub 完全是看缘分。

早在 2013 年 1 月,李开复就开始在微博抗议了:

【强烈抗议封锁 GitHub】 GitHub 是全球最大的社交编程及代码托管网站,近日在国内遭全面屏蔽。在 GitHub 的 300 万会员中,中国是第四大国。GitHub 是程序员学习和与世界接轨的首选工具。GitHub 并无意识形态,也没有反动内容。封锁 GitHub 毫无道理,只会导致国内程序员和国际脱轨,失去竞争力和前瞻性。转!

当时的动静也挺大的,抗议后,也是有一段时间能正常访问了。不过现在嘛……

原理

我们在浏览器输入 GitHub 的网址时,会向 DNS 服务器发送一个请求,获取到 GitHub 网站所在的服务器 IP 地址,从而进行访问。

就像你是一名快递员,在送快递前要先找中间人询问收件人的地址。而 DNS 就是这个告诉你目标地址的中间人,如果 DNS 告诉了你错误的地址、或者请求被拦截、再或者 DNS 挂了,都会导致你无法访问网站。

那么根据这个原理,可以得出的解决办法:

  • 使用代理服务器
  • 修改 hosts,绕过 DNS

接下来说说我了解到的解决办法。

方法一:魔法上网

如题,直接用魔法上网,使用代理,解决墙的问题。

如果你看不懂,那么请忽略该方法。

方法二:改 hosts 文件

还是科普下吧:

hosts 文件是一个纯文本文件,存在于几乎所有的操作系统中,用于将主机名映射到 IP 地址。

简单来说,就是将 GitHub 服务器的地址直接写到 hosts 文件里,绕过 DNS 的解析。

hosts 文件在每个系统的位置不一:

  • Windows 系统:C:\Windows\System32\drivers\etc\hosts
  • Linux 系统:/etc/hosts
  • Mac(苹果电脑)系统:/etc/hosts
  • Android(安卓)系统:/system/etc/hosts
  • iPhone(iOS)系统:/etc/hosts

注意,修改该文件的话:

  • Windows、Linux、Mac 使用 Root 权限
  • iPhone、iPad 须越狱
  • Android 必须要 root

Windows

以 Windows 为例,文件的路径是:C:\Windows\System32\drivers\etc

由于该文件比较重要,一般是不能直接修改的。解决方法有:

  1. 以管理员权限运行记事本,然后打开该文件进行编辑,然后保存
  2. 将该文件复制到桌面或其他文件夹,修改后复制回去(会提示要管理员权限)
  3. 在该文件上右键 → 打开文件属性 → 将“只读”取消勾选并应用保存

以第一个方法为例,首先以管理员权限打开记事本:

在记事本里打开该文件,即可进行编辑。

如果打开所在文件夹后,如果看见文件夹是空的,请修改下方选择框中的文件类型为“所有类型”:

修改方式:将 IP 和域名填写到该文件末尾,注意两者直接有个空格( xx 为你查询到的 IP 地址):

xx.xx.xx.xx www.github.com

Linux / Mac

而对于 Linux / Mac 用户来说,文件的路径是:/etc/hosts

修改方法:

  • 通过 vim,例如 sudo vim /etc/hosts
  • 通过追加符,例如 echo 127.0.0.2 google.com >> /etc/hosts
  • 其他常用命令......

至于 iPhone,iPad,Android 的修改 hosts 场景很少见,也挺麻烦,这里就不展开了。

如何查询 IP

可以通过 IP 查询工具(例如 ipaddress.com),打开后输入要查询的域名,即可查到对应的 IP 地址。

也可以通过 GitHub520,这个 GitHub 项目,作者每天会更新一份完整的 hosts 列表,无需大家自己查询,直接拿来用即可。

也可以用 fetch-github-hosts,这和上一个项目是类似的,官网:hosts.gitcdn.top

刷新 DNS 缓存

修改完 hosts 文件后,如果还不能正常访问,那就试试刷新下 DNS 缓存,在命令行里执行:

  • Linux: /etc/init.d/network restart
  • Windows: ipconfig /flushdns
  • Macos: sudo killall -HUP mDNSResponder

如果上述方法无效,那就再试试重启机器。

如果还不行,那就只能换个方法了。

自动更新 hosts

如果每天都手动更新 hosts 文件,也太麻烦了,为此可以借住一些图形化工具来完成,例如 SwitchHosts,配置参考下面:

  • Hosts 类型: Remote
  • Hosts 标题: 随意
  • URL:https://raw.hellogithub.com/hosts​ (这个是 GitHub520 提供的 hosts 文件,会定期更新)
  • 自动刷新: 最好选 1 小时

也可以借住自动任务(例如 Linux 的 crontab)来完成更新。Unix/Linux 一键使用:

sed -i "/# fetch-github-hosts begin/Q" /etc/hosts && curl https://hosts.gitcdn.top/hosts.txt >> /etc/hosts

方法三:使用第三方下载

如果以上方法都不行,可以换种思路:直接将 GitHub 上的项目下载到本地。

现在有很多支持 GitHub 加速下载的网站,比如 GitClone.com,输入项目名即可高速下载!

该方法的缺点:

  • 如果项目过大,下载起来也挺麻烦
  • 看不到对应项目的 issue 等,也不能进行 PR 等操作

如果你仅仅是想看看文档、源码等,该方法也是可以的。

还可以用 Offcloud,号称当前离线下载服务的最佳选择之一。除了常规的 BT 或磁力链接下载外,它还支持 YouTube、Vimeo 等视频网站和 Dropbox、百度网盘等在线储存服务的链接,免去在各客户端间切换的烦恼。

输入邮箱即可免费注册,登录后选择 instant,然后复制 GitHub 项目的 zip 链接,点击 Dowload 即可快速下载。

其他加速下载网站:

方法四:使用 Gitee

Gitee 支持在新建项目时,直接导入已有的 GitHub 仓库。想要下载哪个项目的源码,直接输入对应的 GitHub 仓库地址即可:

还可以随时将 Gitee 的仓库和 GitHub 仓库进行同步。同步后,你就可以在 Gitee 上提交和管理代码了:

此外,也可以下载项目后重新关联远程仓库为 GitHub。

最后

GitHub 是 全球知名的代码开源平台。这里有千万个项目的源代码,可以和各位编程技术大牛交流学习,也可以发布自己的开源项目,利用平台进行代码托管。

如今 GitHub 的功能越来越强大了,比如工作流、仓库图表可视化、在线开发、项目页面等,即使你是 GitHub 的老用户,我相信很多功能你也未必知道。

总之,想要提升自己的编程技能,就必须要掌握 GitHub 的用法!为此,首先就得先解决访问失败的问题。

参考

https://github.com/521xueweihan/GitHub520

https://github.com/Licoy/fetch-github-hosts

https://github.com/oldj/SwitchHosts

GitHub 访问不了?砸墙狂魔教你几招 - 程序员鱼皮

国内访问 Github 慢的解决方法 - 阿小信的博客

posted @   peterjxl  阅读(28965)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示