GitHub 偶尔打不开时,我会先分清楚:是域名解析出了问题,还是网络根本连不到它。改 hosts 只对前一种情况可能有用,它不是代理,也不会绕过防火墙或修复 TLS 连接。
从哪里取 hosts
我用的是 maxiaof/github-hosts。项目提供了 GitHub 及相关资源域名的解析记录,更新地址是 hosts 文件。
IP 地址会变化,照抄固定列表容易误导。直接到项目查看最新文件,检查域名与更新日期,再替换自己添加的那一段。

说明图:hosts 改的是解析,不是网络通路
图中 hosts 和 DNS 是解析路径,后面的网络连接是另一件事。拿到 IP 并不代表一定连得通。
修改之前先备份
Windows 的文件在 C:\Windows\System32\drivers\etc\hosts,macOS 和 Linux 在 /etc/hosts。先复制一份备份,再使用管理员权限编辑。不要覆盖文件里原有的 localhost、开发环境域名或其他业务配置。
给自己添加的内容留一对清楚的注释,例如 # GitHub hosts begin 和 # GitHub hosts end。以后更新时只替换这两行之间的记录,不要把每次下载的整份文件反复追加进去。
刷新缓存与检查
Windows 在管理员终端执行:
ipconfig /flushdns
macOS 可以在终端执行:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Linux 没有一条适用于所有发行版的缓存命令。如果机器使用 systemd-resolved,执行:
sudo resolvectl flush-caches
使用 nscd 的机器才需要重启 nscd;没有启用这些服务就不必照抄。sudo nscd restart 不是通用的服务管理写法。
然后重开浏览器,检查 GitHub 页面、图片和仓库文件能否分别加载。Linux 还可以用 getent hosts github.com 查看系统解析结果。nslookup 通常直接查询 DNS,不能单独拿它来判断 hosts 是否生效。
如果首页能打开但 raw 文件或头像仍然失败,检查对应域名是否也在项目维护范围内。若连接一直超时,回退刚加入的记录,继续检查网络、代理策略和防火墙;不要关闭证书校验来掩盖问题。