1、问题背景
国内访问 GitHub 经常遇到”抽风”——时而能打开时而打不开,git clone、git push 超时失败,或者页面加载极慢。这是因为 DNS 解析到的 IP 被干扰或不可用导致的。
一种简单有效的非科学上网解决方案是:修改 hosts 文件,让 GitHub 相关域名直接指向可用 IP,绕过 DNS 污染。
2、github-hosts 项目
已经有人专门维护 GitHub 的 hosts 列表,每日自动更新 IP 地址:
项目地址:https://github.com/maxiaof/github-hosts
该项目通过 GitHub Actions 每日自动检测 GitHub 各域名的可用 IP,生成最新的 hosts 配置。涵盖的域名包括:
github.com— 主站api.github.com— API 接口raw.githubusercontent.com— 原始文件访问github.io— GitHub Pagesgist.github.com— Gistcodeload.github.com— 代码下载github.dev— 在线编辑器avatars.githubusercontent.com— 头像- 等等 30+ 个相关域名
3、操作步骤
Windows
第一步:用记事本以管理员身份打开 hosts 文件。
路径:C:\Windows\System32\drivers\etc\hosts
操作方法:右键记事本 → 以管理员身份运行 → 文件 → 打开 → 粘贴上面的路径。
第二步:将 github-hosts 项目中 #Github Hosts Start 到 #Github Hosts End 之间的内容复制,粘贴到 hosts 文件末尾。
第三步:保存文件,然后刷新 DNS 缓存:
ipconfig /flushdns
Mac / Linux
第一步:编辑 hosts 文件(需要 sudo 权限):
sudo vi /etc/hosts
第二步:将 github-hosts 项目中的 hosts 内容粘贴到文件末尾,保存退出。
第三步:刷新 DNS 缓存:
# Mac
sudo killall -HUP mDNSResponder
# Linux
sudo systemctl restart nscd
如果刷新后仍然不生效,重启电脑即可。
4、注意事项
- 定期更新:GitHub 的 IP 可能变化,建议隔几周重新获取一次最新的 hosts 配置。github-hosts 项目每日更新,定期访问页面复制最新内容即可。
- 不要重复添加:如果之前添加过,先把旧的
#Github Hosts Start到#Github Hosts End之间的内容删除,再粘贴新的。 - 不要随意修改 IP:列表中的 IP 是经过测试可用的,不要手动修改,否则可能无法连接。
- 并非万能:hosts 方式解决的是 DNS 层面的问题,如果遇到更复杂的网络限制,可能仍需其他方案。
每天前进一小步,就是一个新的高度!