无法访问GitHub非科学上网解决办法

1、问题背景

国内访问 GitHub 经常遇到”抽风”——时而能打开时而打不开,git clonegit 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 Pages
  • gist.github.com — Gist
  • codeload.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 层面的问题,如果遇到更复杂的网络限制,可能仍需其他方案。

每天前进一小步,就是一个新的高度!