直接修改/etc/hosts并刷新dns缓存是最稳定、无需额外软件的解决方式,可有效应对dns污染导致的git clone/pull连接超时等问题,需结合nslookup、ping、curl验证污染,获取并绑定最新github相关域名ip,再清系统dns缓存并排除代理干扰。
直接改 /etc/hosts 并刷新 dns 缓存,是最稳定、无需额外软件的解决方式。dns 污染本质是本地请求被篡改返回了错误 ip(比如 127.0.0.1 或不可达地址),导致 git clone、git pull 等操作卡在连接阶段,报错类似 connection timed out 或 failed to connect to github.com port 443。
确认是否为 DNS 污染
打开终端,依次执行:
-
ping -c 3 github.com—— 若显示unknown host或一直Request timeout,说明解析失败或连通异常; -
nslookup github.com—— 若返回127.0.0.1、0.0.0.0或明显非 GitHub 官方段(如 140.82.x.x、185.199.x.x),基本可判定污染; -
curl -I https://github.com—— 若卡住或报Could not resolve host,进一步验证 DNS 层问题。
更新 hosts 文件绑定有效 IP
GitHub 域名对应的 IP 并非固定,需使用当前可达的地址。推荐组合使用以下两个来源获取最新 IP:
- 访问 https://www.php.cn/link/75198558c1ed763f12e6f946a46f8b2f,搜索
github.com、assets-cdn.github.com、raw.githubusercontent.com; - 或用国内工具如 站长之家 Ping 工具,选延迟低、状态“在线”的 IP。
常见有效 IP 段(2026 年实测可用):
140.82.114.4 github.com185.199.108.133 raw.githubusercontent.com185.199.108.153 assets-cdn.github.com140.82.112.6 api.github.com185.199.108.133 user-images.githubusercontent.com
编辑 hosts:
Git Worktree 多需求并行开发助手:在当前 worktree 目录独立开发、修改、提交代码,不跨目录。基于目录命名规范自动识别仓库归属(如 main-repo-feature‑a → main‑repo 仓库)。遵循最小改动原则,从需求分析到 commit 交付全流程负责。触发场景:用户在 ...
在文件末尾粘贴上述行(注意用 Tab 或空格分隔,勿用中文符号),保存后退出。
强制刷新系统 DNS 缓存
macOS 不会自动识别 hosts 变更,必须手动清缓存:
- 运行:
sudo dscacheutil -flushcache - 再运行:
sudo killall -HUP mDNSResponder
完成后,再次执行 nslookup github.com,应显示你刚填入的 IP;ping github.com 应有正常响应(ms 级延迟)。
补充建议:避免代理与旧配置干扰
有时问题并非纯 DNS,而是叠加干扰:
- 检查 Git 是否误设代理:
git config --global --get http.proxy,若返回地址,用git config --global --unset http.proxy清除; - 检查环境变量:
echo $http_proxy $https_proxy,如有输出,临时取消:unset http_proxy https_proxy; - 确认 hosts 中没有残留的旧 GitHub 条目(如指向 192.30.253.x 或已失效 IP),全部删掉再重写。










