通过修改 hosts 文件来直连 GitHub，是解决国内访问 GitHub 时连接不稳定、速度慢甚至无法访问的有效方法。其原理是绕过 DNS 解析，直接将 GitHub 的主要域名指向其真实、稳定的 IP 地址

#### 核心原理

当你在浏览器输入 github.com 时，系统会先查询 DNS 服务器来获取对应的 IP 地址。由于网络环境问题，这个查询过程可能失败或返回不理想的 IP。修改 hosts 文件就是手动在本地建立“域名 -> IP”的映射关系，跳过不可靠的 DNS 查询，直达目标服务器。

---

#### 方法一：手动查找并更新（推荐用于理解过程）

##### 第一步：获取最新的 GitHub IP 地址

IP 地址会变化，所以不能一直用网上搜到的老旧 IP。你需要自己查询最新的。

1. 访问 IPAddress.com 网站查询以下关键域名的当前 IP 地址。
2. 需要查询的域名包括：
   · github.com
   · assets-cdn.github.com
   · github.global.ssl.fastly.net
   · codeload.github.com
   · gist.github.com
3. 查询方法：
   · 打开 https://www.ipaddress.com/
   · 在搜索框中分别输入每个域名进行查询。
   · 在结果页面中找到对应的 IP 地址（通常是 A Record 或 AAAA Record）。例如，查询 github.com 可能会得到 140.82.113.4（这是一个示例，请以你查询到的为准）。
   注意：github.global.ssl.fastly.net 可能是一个 CDN 域名，有时会解析出多个 IP，选择一个延迟较低的即可。对于 assets-cdn.github.com，它可能指向多个 CloudFront 地址，也选择一个稳定的 IP。

##### 第二步：修改 hosts 文件

hosts 文件位于系统的特定位置，修改需要管理员权限。

###### Windows 系统：

1. hosts 文件路径：C:\Windows\System32\drivers\etc\hosts
2. 在开始菜单搜索 “记事本”，右键点击，选择 “以管理员身份运行”。
3. 在记事本中，点击 文件 -> 打开，导航到 C:\Windows\System32\drivers\etc，将文件类型改为“所有文件 ( . )”，就能看到 hosts 文件，选择它打开。
4. 在文件末尾，添加如下格式的内容（将 IP地址 替换为你第一步查到的真实 IP）：
   ```bash
   # GitHub Start
   140.82.113.4      github.com
   185.199.108.153   assets-cdn.github.com
   151.101.65.194    github.global.ssl.fastly.net
   140.82.114.9      codeload.github.com
   140.82.113.5      gist.github.com
   # GitHub End
   ```
   注意：IP 和域名之间用空格或制表符隔开。# 开头的是注释，方便管理。
5. 保存文件。如果无法直接保存，可以先将文件另存到桌面，修改后再拖回原目录覆盖。

###### macOS / Linux 系统：

1. 打开终端（Terminal）。
2. 使用 sudo 权限编辑 hosts 文件：
   ```bash
   sudo nano /etc/hosts
   ```
   输入你的电脑密码。
3. 光标移动到最后，同样添加上述格式的内容。
4. 按下 Ctrl + O 写入保存，再按 Ctrl + X 退出 nano 编辑器。

##### 第三步：刷新 DNS 缓存

修改 hosts 后，需要清除系统旧的 DNS 缓存才能使新设置生效。

· Windows： 以管理员身份打开命令提示符（CMD 或 PowerShell），输入：
  ```cmd
  ipconfig /flushdns
  ```
· macOS： 在终端输入：
  ```bash
  sudo killall -HUP mDNSResponder
  ```
  对于不同版本的 macOS，命令可能略有不同，如 sudo dscacheutil -flushcache。
· Linux： 根据发行版不同，命令可能不同。常见的是：
  ```bash
  sudo systemctl restart nscd
  或
  sudo /etc/init.d/networking restart
  ```

##### 第四步：测试连接

1. 打开命令提示符或终端，ping 一下域名，看是否解析到你设置的 IP：
   ```bash
   ping github.com
   ```
2. 直接打开浏览器访问 github.com，看是否能正常加载。

---

#### 方法二：使用开源工具自动更新（更省心）

手动更新比较麻烦，推荐使用开源工具 SwitchHosts，它可以自动从远程获取最新的 hosts 规则并应用。

1. 下载 SwitchHosts：
   · 访问其 GitHub 发布页：https://github.com/oldj/SwitchHosts/releases
   · 下载对应你操作系统的版本（如 SwitchHosts_windows_arch.exe）。
2. 配置远程规则：
   · 打开 SwitchHosts，点击 “+” 添加一个新规则。
   · 选择 “远程”。
   · 在规则名中填写 GitHub Hosts。
   · 在 URL 地址中填入一个持续更新的 hosts 源，例如：
     · ineo6/hosts（推荐）： https://gitee.com/ineo6/hosts/raw/master/hosts
     · 或者其他在 GitHub/Gitee 上维护的知名 hosts 项目。
   · 设置自动刷新时间（如 1 小时）。
   · 点击 “确定” 保存。
3. 启用规则：
   · 在 SwitchHosts 主界面，点击你刚添加的 GitHub Hosts 规则旁边的开关，将其启用（变为绿色）。
   · 软件可能会请求管理员权限，同意即可。

此后，SwitchHosts 会自动定期从你设置的 URL 拉取最新的 GitHub IP 地址并更新你的 hosts 文件，无需你再手动操作。

常见问题与解决

· 修改后仍无法访问？
  · 检查 IP 是否正确： 你使用的 IP 可能已经过期。请重新用 IPAddress.com 查询或使用 SwitchHosts。
  · 检查 hosts 文件格式： 确保 IP 和域名之间只有空格，没有多余字符。
  · 彻底清除浏览器缓存和 DNS 缓存： 关闭浏览器再重新打开，并再次执行 ipconfig /flushdns。
  · 尝试 HTTPS 访问： 有些工具会劫持 HTTP 请求，直接访问 https://github.com。
· 安全性问题？
  · 手动从 IPAddress.com 查询是安全的。
  · 使用 SwitchHosts 时，请确保你使用的远程规则源是可信的（如上述推荐的 Gitee 源，访问速度较快）。
· 修改 hosts 是永久解决方案吗？
  · 不是永久的。因为 GitHub 的服务器 IP 可能会变更。一旦变更，旧的映射就会失效。这就是为什么推荐使用 SwitchHosts 这类工具来自动更新。

