第13章:网络优化 —— 中国用户的必修课 ⭐
26 分钟阅读
第13章:网络优化 —— 中国用户的必修课 ⭐
如果你在中国使用GitHub,这一章就是为你量身定制的救命稻草!相信你一定经历过这样的绝望时刻:凌晨三点,你终于写完了代码,兴奋地输入 git push,然后…进度条卡住了。一分钟、两分钟、五分钟…最后"Connection timeout"。这一刻,你想砸键盘、想摔鼠标、想对着屏幕怒吼。别慌,这不是你的错,是"国际带宽"的锅!
13.1 为什么 GitHub 这么慢?国际带宽的忧伤
什么是国际带宽?
国际带宽(International Bandwidth)是指中国与其他国家之间的网络连接通道。简单来说,就是访问国外网站时要走的"跨国高速公路"。
想象一下:你在北京,GitHub的服务器在旧金山。你的数据要跨越太平洋,经过海底光缆,穿过无数个路由器,才能到达目的地。这段路程,比从北京到上海远多了!
你的电脑(北京)
↓
国内网络(光速)
↓
国际出口(瓶颈!拥堵!)
↓
海底光缆(跨太平洋)
↓
美国网络
↓
GitHub服务器(旧金山)
为什么国际带宽是瓶颈?
1. 物理距离:光也要时间
即使是光速,从北京到旧金山也要几十毫秒。往返一次(RTT)就要100多毫秒。这意味着,每次你和GitHub服务器"握手",都要等这么久。
2. 带宽有限:高速公路也会堵车
国际出口带宽是有限的。当太多人同时访问国外网站时,就像高速公路堵车一样,速度会急剧下降。晚上8点到12点是高峰期,GitHub慢得像蜗牛。
3. 网络审查:安全检查需要时间
为了网络安全,国际流量需要经过审查。这就像出国要经过海关检查,虽然必要,但确实会增加延迟。
4. DNS污染:被带错路的痛苦
有时候,GitHub的域名会被错误解析到错误的IP地址,导致你连不上或者连到很慢的服务器。这就像你要去故宫,却被导航带到了郊区。
GitHub慢的常见表现
| 症状 | 描述 | 痛苦指数 |
|---|---|---|
| 网页加载慢 | 打开GitHub首页要等10秒以上 | ⭐⭐⭐ |
| 图片不显示 | 头像、截图加载不出来,显示裂图 | ⭐⭐⭐ |
| clone慢 | 下载仓库速度只有几KB/s,大仓库要几小时 | ⭐⭐⭐⭐⭐ |
| push失败 | 推送经常超时,要重试好几次 | ⭐⭐⭐⭐⭐ |
| raw文件打不开 | 无法查看原始文件,显示404或超时 | ⭐⭐⭐ |
| release下载慢 | 下载Release包慢得像蜗牛 | ⭐⭐⭐⭐ |
测速:诊断你的网络
在解决问题之前,先诊断一下你的网络状况:
1. ping测试:看看延迟多少
| |
正常情况延迟应该在200ms以内,如果超过500ms,说明网络状况不好。
2. traceroute:看看路由路径
| |
这个命令会显示数据包经过的每一个节点,可以看到在哪里卡住了。
3. 测试下载速度
| |
如果速度低于100KB/s,说明需要优化了。
解决思路概览
既然知道了问题所在,解决方案也就清晰了:
| 方案 | 原理 | 效果 | 难度 |
|---|---|---|---|
| 代理 | 绕过国际带宽,走快速通道 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| SSH | 比HTTPS更稳定高效 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 国内镜像 | 使用国内缓存服务器 | ⭐⭐⭐⭐ | ⭐ |
| Gitee导入 | 把代码搬到国内 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 浅克隆 | 只下载必要的内容 | ⭐⭐⭐ | ⭐ |
| 优化DNS | 使用正确的IP地址 | ⭐⭐⭐ | ⭐⭐ |
接下来的小节,我们将逐一深入学习这些优化技巧,让你的GitHub体验从"龟速"变"神速"!
13.2 代理配置:让 Git 走代理的几种姿势
使用代理是解决GitHub慢的最直接、最有效的方法。代理服务器在国外(或者香港、日本等网络好的地方),它帮你访问GitHub,然后把数据传回给你。就像你请了一个在国外的朋友帮你买东西,然后寄回来。
代理的工作原理
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 你的电脑 │ ──────▶ │ 代理服务器 │ ──────▶ │ GitHub │
│ (北京) │ │ (香港/日本)│ │ (旧金山) │
│ │ ◀────── │ │ ◀────── │ │
└─────────────┘ 快速 └─────────────┘ 快速 └─────────────┘
慢 ❌ 快 ✅ 快 ✅
直接访问 通过代理 代理到GitHub
配置HTTP代理
如果你使用的是HTTP代理(如Shadowsocks的HTTP模式、V2Ray的HTTP模式):
全局配置(所有仓库都走代理):
| |
仅对GitHub生效(推荐):
| |
配置SOCKS5代理
如果你使用的是SOCKS5代理(Shadowsocks、V2Ray默认模式、Clash等):
| |
配置SSH走代理
SSH方式需要额外配置,因为SSH使用22端口,不走HTTP代理。
方法1:使用nc(netcat)—— 适用于Linux/Mac
编辑或创建 ~/.ssh/config 文件:
# ~/.ssh/config
# 这个配置让SSH连接GitHub时走SOCKS5代理
Host github.com
HostName github.com
User git
# 使用nc命令通过SOCKS5代理连接
ProxyCommand nc -v -x 127.0.0.1:1080 %h %p
IdentityFile ~/.ssh/id_ed25519
# %h 代表目标主机名(github.com)
# %p 代表目标端口(22)
# -x 指定SOCKS5代理地址
# 如果使用HTTP代理而不是SOCKS5
Host github.com
HostName github.com
User git
ProxyCommand nc -v -X connect -x 127.0.0.1:1080 %h %p
IdentityFile ~/.ssh/id_ed25519
# -X connect 表示使用HTTP CONNECT方法
方法2:使用connect——适用于Windows
Windows上可以使用connect.exe工具:
# ~/.ssh/config
Host github.com
HostName github.com
User git
ProxyCommand connect -S 127.0.0.1:1080 %h %p
IdentityFile ~/.ssh/id_ed25519
# -S 表示使用SOCKS5代理
# 如果是HTTP代理,用 -H 参数
方法3:使用PuTTY(Windows图形界面)
如果你使用PuTTY管理SSH密钥:
- 打开PuTTY
- 选择你的GitHub会话配置
- 左侧菜单:Connection → Proxy
- 选择代理类型(HTTP或SOCKS5)
- 填写代理地址和端口
- 保存配置
验证代理是否生效
配置完成后,验证代理是否工作:
| |
代理配置速查表
| 场景 | 命令 | 说明 |
|---|---|---|
| 全局HTTP代理 | git config --global http.proxy http://127.0.0.1:1080 | 所有仓库都走代理 |
| 仅GitHub代理 | git config --global http.https://github.com.proxy http://127.0.0.1:1080 | 只对GitHub生效 |
| SOCKS5代理 | git config --global http.proxy socks5://127.0.0.1:1080 | Shadowsocks等 |
| 取消代理 | git config --global --unset http.proxy | 恢复直连 |
| 查看代理 | git config --global --get http.proxy | 查看当前配置 |
常见问题
Q: 配置了代理还是慢?
A: 检查以下几点:
- 代理软件是否正常运行
- 代理地址和端口是否正确
- 代理服务器本身是否快(尝试访问其他国外网站)
- 是否配置了正确的代理类型(HTTP vs SOCKS5)
Q: 代理配置后其他网站访问变慢了?
A: 使用"仅对GitHub生效"的配置,或者只在需要时开启代理。
Q: 公司网络有防火墙,代理连不上?
A: 尝试使用443端口的代理(HTTPS端口通常开放),或者使用公司的代理服务器。
小结
代理是解决GitHub慢的最有效方法:
- HTTP/HTTPS代理配置简单,适合初学者
- SOCKS5代理更安全,适合Shadowsocks/V2Ray用户
- SSH代理需要额外配置,但一劳永逸
- 建议"仅对GitHub生效",避免影响其他网站
配置好代理后,你的GitHub体验会有质的飞跃!
下一节,我们来比较SSH和HTTPS哪个更好。
13.3 SSH vs HTTPS:哪个更快更稳?
Git支持两种协议连接远程仓库:SSH和HTTPS。在中国网络环境下,哪个更好?这一节我们来深入对比分析。
SSH和HTTPS是什么?
SSH(Secure Shell):
- 一种加密的网络传输协议
- 使用22端口
- 通过密钥对认证(私钥+公钥)
- 主要用于远程登录,也用于Git
HTTPS(HyperText Transfer Protocol Secure):
- 安全的HTTP协议
- 使用443端口
- 通过用户名密码或Token认证
- 网页浏览的标准协议
SSH vs HTTPS 详细对比
| 特性 | SSH | HTTPS | 在中国 |
|---|---|---|---|
| 默认端口 | 22 | 443 | 22可能被墙/限速,443通常开放 |
| 认证方式 | SSH密钥 | Token/密码 | SSH密钥更安全 |
| 速度 | 通常更快 | 较慢 | SSH明显更快 |
| 稳定性 | 更稳定 | 容易超时 | SSH更稳定 |
| 配置复杂度 | 需要配置密钥 | 简单 | 配置一次,终身受益 |
| 防火墙穿透 | 22端口可能被限制 | 443端口通常开放 | HTTPS更通用 |
| 首次连接 | 需要确认主机密钥 | 直接连接 | - |
| 代理支持 | 需要额外配置 | 原生支持 | HTTPS代理更简单 |
为什么SSH在中国更快?
1. 协议效率更高
SSH协议本身比HTTPS更轻量。SSH设计用于远程登录,握手过程更简洁。HTTPS为了网页浏览设计,每次请求都有较多开销。
2. 22端口相对"干净"
- SSH使用22端口,这个端口主要用于服务器管理,流量相对较少
- HTTPS使用443端口,是所有网页浏览的流量,非常拥堵
- 虽然22端口有时会被限制,但一旦被允许通过,速度通常更快
3. 连接复用
SSH连接可以复用,一次认证后多次使用。HTTPS每次请求都要重新建立连接(虽然HTTP/2有所改善)。
4. 传输效率
Git over SSH使用专门的Git协议,传输效率更高。Git over HTTPS需要额外的HTTP头部开销。
实测对比
让我们实际测试一下SSH和HTTPS的速度差异:
| |
在中国网络环境下,SSH通常比HTTPS快2-5倍!
推荐使用SSH
在中国网络环境下,强烈建议使用SSH:
配置步骤:
生成SSH密钥(如果还没有)
1$ ssh-keygen -t ed25519 -C "your_email@example.com"添加公钥到GitHub
1 2$ cat ~/.ssh/id_ed25519.pub # 复制内容到GitHub → Settings → SSH and GPG keys测试连接
1 2$ ssh -T git@github.com # 看到 "Hi username!" 表示成功使用SSH地址克隆
1 2 3 4 5# 原HTTPS地址 https://github.com/username/repo.git # 改为SSH地址 git@github.com:username/repo.git修改已有仓库的远程地址
1$ git remote set-url origin git@github.com:username/repo.git
HTTPS的替代方案
如果由于某些原因只能用HTTPS(比如公司防火墙限制),可以:
1. 使用Personal Access Token(PAT)代替密码
GitHub在2021年后不再支持密码登录,必须使用Token:
| |
2. 配置凭据缓存
避免每次都输入Token:
| |
3. 使用代理加速HTTPS
见13.2节的代理配置。
特殊情况:SSH被防火墙阻止
有些公司防火墙会阻止22端口,这时候:
方案1:使用HTTPS+代理
| |
方案2:SSH使用443端口
编辑 ~/.ssh/config:
Host github.com
HostName ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_ed25519
GitHub提供了ssh.github.com:443作为备用SSH入口。
小结
| 场景 | 推荐协议 | 原因 |
|---|---|---|
| 个人开发 | SSH | 更快更稳定 |
| 公司网络(22端口开放) | SSH | 更快更稳定 |
| 公司网络(22端口封锁) | HTTPS+代理 | 能连上最重要 |
| CI/CD环境 | HTTPS+Token | 配置简单 |
在中国:首选SSH,HTTPS作为备用。
下一节,我们来学习国内镜像加速。
13.4 国内镜像加速:ghproxy 等工具的使用
除了代理,还有一种方案是使用国内镜像服务。这些服务把GitHub的内容缓存到国内服务器,你访问的是国内服务器,速度自然就快了。就像你在国内看YouTube视频,通过缓存服务器播放,而不是直接连接美国。
什么是镜像加速?
镜像服务会在国内服务器上缓存GitHub的内容。当你clone或pull时,实际上是从国内服务器下载,速度飞快。
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 你的电脑 │ ──────▶ │ 国内镜像 │ ──────▶ │ GitHub │
│ (北京) │ 飞快! │ (上海/深圳)│ 后台同步 │ (旧金山) │
│ │ ◀────── │ │ ◀────── │ │
└─────────────┘ └─────────────┘ └─────────────┘
快速访问 缓存内容 原始仓库
ghproxy 镜像代理
ghproxy 是最流行的GitHub镜像代理服务之一,开源且稳定。
使用方法:
把GitHub地址中的 github.com 替换为 mirror.ghproxy.com/github.com:
| |
clone示例:
| |
设置Git别名(更方便使用):
| |
取消别名:
| |
其他镜像服务
| 服务 | 地址 | 说明 | 稳定性 |
|---|---|---|---|
| ghproxy | https://mirror.ghproxy.com | 开源,最流行 | ⭐⭐⭐⭐ |
| fastgit | https://hub.fastgit.xyz | 国内节点 | ⭐⭐⭐ |
| gitclone | https://gitclone.com | 支持搜索 | ⭐⭐⭐ |
| gh.api.99988866.xyz | https://gh.api.99988866.xyz | 备用 | ⭐⭐ |
使用示例:
| |
镜像的局限性
镜像服务虽然快,但也有局限:
1. 只读
镜像服务通常只支持clone和pull,不支持push。你只能下载,不能上传。
2. 延迟
镜像是后台同步的,内容可能不是最新的。刚push的代码可能要等几分钟才能在镜像上看到。
3. 不稳定
免费镜像服务可能随时关闭或限速。不要过度依赖。
4. 安全性
使用第三方镜像服务,你的代码会经过他们的服务器。对于私有仓库或敏感代码,建议使用代理而不是镜像。
镜像使用建议
| 场景 | 建议 |
|---|---|
| 克隆开源项目 | ✅ 适合使用镜像 |
| 频繁pull更新 | ✅ 适合使用镜像 |
| 私有仓库 | ❌ 建议使用代理 |
| 需要push | ❌ 使用代理或直连 |
| CI/CD环境 | ✅ 适合使用镜像 |
小结
镜像加速适合只读场景:
- ghproxy:最流行,推荐使用
- 速度快:提升10-100倍
- 配置简单:一行命令搞定
- 注意局限:只读,可能有延迟
对于需要push的场景,还是建议使用代理或SSH。
下一节,我们来学习Gitee导入——国内访问的终极方案。
13.5 Gitee 导入:国内访问的终极方案
如果你经常需要访问某个GitHub项目,或者需要完整的功能(clone+push),可以把它导入到Gitee(码云),然后使用Gitee的地址访问。这是国内访问的终极方案,速度飞快且功能完整。
为什么用Gitee?
Gitee(码云)是国内最大的代码托管平台,由开源中国运营。
优势:
- 国内服务器:访问速度飞快,clone速度可达10MB/s+
- 自动同步:可以设置自动从GitHub同步,保持最新
- 完整功能:支持clone、push、issue、PR等所有功能
- 稳定可靠:国内大厂运营,不会突然关闭
- 中文支持:全中文界面,文档也是中文
劣势:
- 国际影响力小:国外开发者基本不用
- 审核机制:公有仓库需要审核,可能有几分钟到几小时的延迟
- 社区生态:开源项目数量不如GitHub
导入GitHub项目到Gitee
步骤1:登录Gitee
访问 https://gitee.com 并登录账号。
步骤2:创建仓库
点击右上角 “+” 按钮 → “从GitHub/GitLab导入仓库”。
步骤3:填写GitHub地址
输入GitHub仓库地址,例如:
https://github.com/facebook/react
步骤4:配置导入选项
- 仓库名称:可以自定义,建议保持原名
- 仓库介绍:可选,可以留空
- 是否开源:
- 开源:所有人可见(需要审核)
- 私有:仅自己可见(立即创建)
- 开启自动同步:⭐ 强烈推荐勾选
- Gitee会定期(通常每天)从GitHub同步最新代码
- 保持两边代码一致
步骤5:等待导入完成
根据仓库大小,导入时间从几秒到几分钟不等。导入完成后,你就可以使用Gitee地址访问了:
https://gitee.com/你的用户名/react
使用Gitee地址
克隆仓库:
| |
添加GitHub作为upstream(双保险):
| |
日常使用:
| |
自动同步设置
Gitee支持自动同步,保持和GitHub一致:
设置方法:
- 进入Gitee仓库页面
- 点击 “设置” → “仓库设置” → “同步设置”
- 开启 “自动同步”
- 设置同步频率:
- 每天一次(推荐)
- 每周一次
- 手动同步
手动同步:
如果不想等自动同步,可以手动触发:
- 进入Gitee仓库
- 点击 “同步” 按钮
- 等待同步完成
贡献代码回GitHub
如果你在Gitee上修改了代码,想贡献回GitHub:
| |
注意事项
1. 同步延迟
自动同步有延迟,不是实时的。如果你需要GitHub上最新的代码:
- 手动触发同步
- 或者直接使用GitHub地址pull
2. 私有仓库
私有仓库导入后仍然是私有的,但要注意:
- 代码会经过Gitee服务器
- 敏感项目谨慎使用
3. 大仓库
超大仓库(如Linux内核)导入可能失败或很慢。可以:
- 使用浅克隆
- 只导入需要的分支
4. 审核时间
公有仓库需要审核,通常几分钟到几小时。如果急用:
- 先创建为私有仓库
- 导入完成后再改为公有
小结
Gitee导入是终极方案:
- 速度最快:国内服务器,10MB/s+
- 功能完整:clone、push、issue、PR都支持
- 自动同步:保持和GitHub同步
- 适合场景:经常访问的项目、需要push的场景
对于GitHub访问困难的用户,Gitee是最佳选择!
下一节,我们来学习浅克隆——大仓库的救命稻草。
13.6 浅克隆 --depth=1:大仓库的救命稻草
如果你只需要仓库的最新代码,不需要完整的历史记录,可以使用浅克隆(Shallow Clone)。这能大大加快clone速度,节省磁盘空间。就像你去图书馆借书,只需要最新版,不需要所有旧版本。
什么是浅克隆?
浅克隆只下载最近的几个提交,而不是完整的历史记录。默认情况下,Git会下载仓库的所有历史,包括几年前的每一个提交。对于大仓库,这可能需要下载几个GB的数据。浅克隆只下载你需要的部分。
完整克隆:A---B---C---D---E---F (100MB,包含所有历史)
↑
所有提交
浅克隆: E---F (10MB,只包含最近2个提交)
↑
只下载这些
使用方法
基本用法:
| |
克隆特定分支的最近提交:
| |
浅克隆的优势
| 优势 | 说明 | 效果 |
|---|---|---|
| 速度快 | 只下载少量数据 | 从几小时缩短到几分钟 |
| 省空间 | 本地仓库体积小 | 从几个GB减少到几十MB |
| 省流量 | 适合网络不好的环境 | 节省90%以上流量 |
| 快速开始 | 快速获取可运行的代码 | 立即开始工作 |
浅克隆的局限
浅克隆虽然快,但也有一些限制:
1. 看不到完整历史
| |
2. 某些操作受限
- 不能rebase(因为没有完整历史)
- 不能查看旧版本
- 某些Git命令会报错
3. 不能推送
浅克隆通常用于只读场景,不能直接push回远程。
| |
转换为完整仓库
如果你后来需要完整历史,可以"加深"克隆:
| |
实际案例:Linux内核
Linux内核仓库是超级大的仓库,完整克隆需要几个GB:
| |
使用场景
| 场景 | 是否适合浅克隆 | 原因 |
|---|---|---|
| 只想看看代码 | ✅ 非常适合 | 不需要历史 |
| CI/CD构建 | ✅ 非常适合 | 只需要最新代码 |
| 参与开发 | ❌ 不太适合 | 需要完整历史 |
| 学习项目历史 | ❌ 不适合 | 需要看所有提交 |
| 临时测试 | ✅ 适合 | 快速获取代码 |
最佳实践
1. CI/CD环境使用浅克隆
| |
2. 开发时先浅克隆,需要时再加深
| |
3. 结合单分支克隆
| |
小结
浅克隆是大仓库的救命稻草:
--depth=1:只克隆最近1个提交- 速度快:提升10-100倍
- 省空间:节省90%磁盘空间
- 适合场景:CI/CD、临时查看、快速开始
记住:--depth=1 是处理大仓库的利器!
下一节,我们来学习单分支克隆。
13.7 只克隆单个分支:--single-branch 提速
如果你只需要某个特定分支,可以使用 --single-branch 选项,只克隆该分支,忽略其他分支。这可以进一步减少下载量,加快clone速度。
什么是单分支克隆?
默认情况下,git clone 会下载所有分支的引用(虽然只检出默认分支)。--single-branch 只下载指定分支,其他分支完全不下载。
完整克隆:
- main分支(检出)
- develop分支(引用)
- feature-xxx分支(引用)
- 所有标签
- 所有历史
单分支克隆:
- main分支(只下载这个)
使用方法
基本用法:
| |
和浅克隆结合(最快):
| |
适用场景
| 场景 | 是否适合单分支克隆 | 原因 |
|---|---|---|
| 只需要main分支 | ✅ 非常适合 | 其他分支不需要 |
| 只需要特定版本分支 | ✅ 适合 | 比如release分支 |
| 需要切换分支 | ❌ 不适合 | 其他分支不存在 |
| 需要查看所有分支 | ❌ 不适合 | 其他分支没下载 |
查看克隆后的分支
| |
获取其他分支(如果需要)
如果后来需要其他分支:
| |
小结
--single-branch 可以进一步减少下载量:
- 只下载指定分支
- 和
--depth=1配合使用效果最佳 - 适合只需要特定分支的场景
下一节,我们来学习子模块加速。
13.8 子模块加速:当项目依赖其他仓库时
有些项目使用Git子模块(Submodule)来管理依赖。子模块是嵌套在其他Git仓库中的Git仓库。克隆这样的项目时,默认会递归下载所有子模块,这可能很慢。这一节我们学习如何加速子模块的下载。
什么是子模块?
子模块允许你将一个Git仓库作为另一个Git仓库的子目录。常用于:
- 管理项目依赖
- 共享公共库
- 组织大型项目
主项目/
├── src/ # 主项目代码
├── docs/ # 文档
└── vendor/ # 第三方库(子模块)
├── lib-a/ # 子模块:库A
└── lib-b/ # 子模块:库B
子模块的问题
克隆包含子模块的项目时:
| |
子模块加速技巧
1. 不克隆子模块
如果你不需要子模块,可以不克隆:
| |
2. 浅克隆子模块
| |
3. 手动初始化子模块
先克隆主项目,然后只初始化需要的子模块:
| |
4. 使用代理加速子模块
配置Git使用代理,子模块也会走代理:
| |
5. 使用国内镜像加速子模块
如果子模块也在GitHub上,可以使用镜像:
| |
子模块常用命令
| |
小结
子模块加速技巧:
- 不克隆不需要的子模块
- 浅克隆子模块
- 手动初始化需要的子模块
- 使用代理或镜像
下一节,我们来学习网络问题排查。
13.9 网络问题排查:从 DNS 到防火墙
遇到GitHub连接问题?不要慌,这一节我们来系统性地排查和解决各种网络问题。
排查步骤清单
第一步:检查网络连接
| |
第二步:检查DNS解析
| |
第三步:修改Hosts文件
如果DNS解析错误,可以手动指定正确的IP:
查询GitHub的正确IP(通过 https://www.ipaddress.com )
修改hosts文件:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux/Mac:
/etc/hosts
- Windows:
添加以下内容(IP需要自行查询最新的):
# GitHub相关域名
140.82.114.4 github.com
140.82.114.4 api.github.com
140.82.113.4 gist.github.com
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com
- 刷新DNS缓存:
- Windows:
ipconfig /flushdns - Linux:
sudo systemctl restart nscd或sudo systemd-resolve --flush-caches - Mac:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
- Windows:
第四步:检查代理配置
| |
第五步:检查防火墙
| |
常见问题及解决方案
问题1:SSL证书错误
| |
问题2:连接超时
| |
问题3:DNS污染
| |
问题4:代理连接失败
| |
网络问题排查流程图
遇到问题
↓
ping github.com
↓
不通 → 检查网络连接 → 检查DNS → 修改hosts
↓
通了但慢
↓
检查代理配置 → 配置代理 → 测试速度
↓
还是慢
↓
使用镜像/Gitee → 浅克隆 → 完成!
小结
网络问题排查清单:
- ping测试网络连通性
- 检查DNS解析
- 修改hosts(必要时)
- 检查代理配置
- 检查防火墙
- 使用公共DNS
记住:遇到问题不要慌,按步骤排查,总能解决!
下一节,我们来了解备用方案。
13.10 备用方案:码云、Coding、阿里云效、AtomGit 等
如果GitHub实在访问不了,或者速度太慢影响工作,国内还有很多优秀的代码托管平台可以作为备用。这些平台服务器在国内,访问速度飞快,功能也很完善。
国内平台对比
| 平台 | 地址 | 特点 | 适合场景 |
|---|---|---|---|
| Gitee | gitee.com | 国内最大,生态好,支持GitHub同步 | 个人开源、GitHub镜像 |
| Coding | coding.net | 腾讯旗下,DevOps功能强 | 企业团队、DevOps |
| 阿里云效 | devops.aliyun.com | 阿里生态,企业级功能 | 阿里云用户、企业 |
| AtomGit | atomgit.com | 开放原子开源基金会,支持开源 | 开源项目、基金会项目 |
| GitCode | gitcode.com | CSDN旗下,开发者社区 | CSDN用户、个人项目 |
Gitee(码云)—— 国内首选
优势:
- 国内访问速度最快,clone速度可达10MB/s+
- 支持从GitHub自动同步
- 开源项目多,社区活跃
- 免费私有仓库
劣势:
- 国际影响力小
- 公有仓库需要审核
适用场景:
- GitHub的国内镜像
- 个人开源项目
- 需要快速访问的场景
Coding—— 腾讯出品
优势:
- 腾讯生态,稳定性好
- DevOps功能强大(CI/CD、项目管理)
- 私有仓库免费
- 支持企业微信集成
劣势:
- 社区不如Gitee活跃
- 部分高级功能收费
适用场景:
- 企业团队开发
- 需要DevOps工具链
- 腾讯生态用户
阿里云效—— 阿里生态
优势:
- 阿里生态,和阿里云集成好
- 企业级功能完善
- 支持大规模团队协作
劣势:
- 个人开发者功能有限
- 部分功能收费
适用场景:
- 阿里云用户
- 企业级项目
- 大规模团队协作
AtomGit—— 开源基金会
优势:
- 开放原子开源基金会运营
- 支持开源项目
- 公益性质
劣势:
- 较新,生态还在建设中
适用场景:
- 开源基金会项目
- 开源贡献
迁移建议
如果GitHub实在用不了:
主力开发迁移到Gitee
- 把常用项目导入Gitee
- 设置自动同步保持更新
保留GitHub作为备份
- 定期从Gitee同步到GitHub
- 保持GitHub上的绿格子
团队协作选择
- 小团队:Gitee或Coding
- 企业团队:Coding或阿里云效
- 开源项目:AtomGit
多平台同步策略
GitHub(原始仓库)
↓ 自动同步
Gitee(国内镜像) ← 主力开发
↓ 定期推送
Coding(备份)
小结
国内平台选择建议:
- 个人开源:Gitee(速度快,生态好)
- 企业团队:Coding(DevOps完善)或阿里云效(阿里生态)
- 开源基金会:AtomGit
- GitHub备份:Gitee自动同步
记住:不要把鸡蛋放在一个篮子里,多平台备份更安心!
本章小结
恭喜!你已经掌握了GitHub网络优化的全套技能,从"龟速"变"神速"!
优化方案总结
| 方案 | 适用场景 | 效果 | 难度 |
|---|---|---|---|
| 代理 | 所有场景 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| SSH | 日常开发 | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 镜像加速 | 只读场景 | ⭐⭐⭐⭐ | ⭐ |
| Gitee导入 | 常用项目 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 浅克隆 | 大仓库 | ⭐⭐⭐⭐ | ⭐ |
| 单分支克隆 | 特定分支 | ⭐⭐⭐ | ⭐ |
| 优化DNS | 连接问题 | ⭐⭐⭐ | ⭐⭐ |
推荐配置(按优先级)
日常开发配置:
- 配置SSH密钥(一劳永逸)
- 设置代理(仅对GitHub生效)
- 常用项目导入Gitee并开启自动同步
CI/CD环境配置:
- 使用
--depth=1浅克隆 - 使用
--single-branch单分支克隆 - 使用国内镜像
应急方案:
- 使用Gitee访问
- 使用镜像服务
- 修改hosts
重要提醒
- 代理是最有效的方案,强烈推荐配置
- SSH比HTTPS更稳定,在中国网络环境下首选
- 浅克隆能节省大量时间,大仓库必备
- 国内平台是可靠的后备,不要忽视
希望这些技巧能让你的GitHub体验从"想砸键盘"变成"丝般顺滑"!
本章完 | Chapter 13 Complete