Skip to content

GitHub 加速

本文介绍如何在 Linux 环境中通过 GitHub Proxy 加速公开仓库、源码包和 Release 文件的下载,适合在 GPU 容器或网络访问 GitHub 较慢的服务器中使用。

概述

GitHub Proxy 的基本用法是在原始 GitHub 地址前添加代理前缀:

text
https://gh-proxy.com/<GitHub 原始地址>

例如,原始仓库地址为:

text
https://github.com/OWNER/REPOSITORY.git

添加代理前缀后变为:

text
https://gh-proxy.com/https://github.com/OWNER/REPOSITORY.git

本文使用的 gh-proxy.com 是第三方公共服务,并非 GitHub 或立方云官方服务。服务可用性、速度和支持范围可能发生变化,请勿通过第三方代理传输账号密码等敏感信息。

克隆公开仓库

将仓库地址替换为代理地址后执行 git clone

bash
git clone https://gh-proxy.com/https://github.com/OWNER/REPOSITORY.git

例如:

bash
git clone https://gh-proxy.com/https://github.com/pytorch/examples.git

如只需要最新代码,可以通过浅克隆减少传输量:

bash
git clone --depth 1 https://gh-proxy.com/https://github.com/pytorch/examples.git

代理不可用时,移除 https://gh-proxy.com/ 前缀即可恢复为 GitHub 官方地址。

下载源码压缩包

GitHub 分支和 Tag 的源码压缩包可以使用 wgetcurl 下载。

下载分支

bash
wget -O repository-main.zip \
  https://gh-proxy.com/https://github.com/OWNER/REPOSITORY/archive/refs/heads/main.zip

使用 curl 时需要启用重定向:

bash
curl -L \
  https://gh-proxy.com/https://github.com/OWNER/REPOSITORY/archive/refs/heads/main.zip \
  -o repository-main.zip

下载 Tag

bash
wget -O repository-v1.0.0.tar.gz \
  https://gh-proxy.com/https://github.com/OWNER/REPOSITORY/archive/refs/tags/v1.0.0.tar.gz

请将示例中的 OWNERREPOSITORY、分支名和版本号替换为实际值。

下载 Release 文件

先在 GitHub Release 页面复制文件的原始下载地址,再在地址前添加代理前缀:

bash
wget \
  https://gh-proxy.com/https://github.com/OWNER/REPOSITORY/releases/download/v1.0.0/package.tar.gz

下载大文件时可以使用 -c 参数断点续传:

bash
wget -c \
  https://gh-proxy.com/https://github.com/OWNER/REPOSITORY/releases/download/v1.0.0/package.tar.gz

如果项目提供 SHA256 等校验值,下载完成后应验证文件完整性:

bash
sha256sum package.tar.gz

下载 Raw 文件

对于 raw.githubusercontent.com 上的单个文件,同样可以添加代理前缀:

bash
curl -L \
  https://gh-proxy.com/https://raw.githubusercontent.com/OWNER/REPOSITORY/main/path/to/file \
  -o file

请先在浏览器中打开 GitHub 文件页面并复制 Raw 地址,避免手动拼写分支和文件路径时出错。

Git LFS 与 Submodule

GitHub Proxy 不一定完整支持 Git LFS 和 Git Submodule:

  • 仓库克隆成功后,Git LFS 大文件仍可能从其他域名下载并失败。
  • .gitmodules 中通常保存 GitHub 官方地址,子模块下载不一定经过代理。
  • 包含大量 LFS 文件的模型仓库,建议优先使用项目提供的对象存储、Release 包或其他官方镜像。

如果只需要先获取 Git 仓库而暂时跳过 LFS 文件,可以执行:

bash
GIT_LFS_SKIP_SMUDGE=1 git clone \
  https://gh-proxy.com/https://github.com/OWNER/REPOSITORY.git

私有仓库

不建议通过公共第三方代理克隆私有仓库,也不要在代理 URL 中写入用户名、密码、Access Token 或其他凭证。

访问私有仓库时,建议使用 GitHub 官方 SSH 地址、可信网络代理或组织内部部署的镜像服务:

bash
git clone git@github.com:OWNER/REPOSITORY.git

常见问题

返回 403、404 或 5xx

先移除代理前缀检查 GitHub 原始地址是否有效,并确认仓库、分支、Tag 和文件名没有拼写错误。原始地址有效但代理持续报错时,请稍后重试或直接使用官方地址。

下载后的文件无法解压

代理异常时可能返回 HTML 错误页面。可以先检查文件类型和大小:

bash
file package.tar.gz
ls -lh package.tar.gz

如果文件类型显示为 HTML,请删除错误文件并重新下载。

下载速度没有提升

实际速度受代理节点、源站状态、文件大小和当前网络影响。建议对官方地址和代理地址分别进行测试,再选择更稳定的方式。

注意事项

  • 公共代理不提供稳定性保证,重要任务应准备 GitHub 官方地址作为回退方案。
  • 只通过公共代理下载公开资源,不要提交账号密码、Token 或私有代码。
  • 执行来源不明的脚本前应先检查内容,避免直接使用 curl ... | bash
  • 对模型、安装包和可执行文件,建议使用项目官方提供的哈希值或签名进行校验。