本文目录导读:

- 使用
git clone本地备份(最基础) - 使用 GitHub 官方备份工具(推荐)
- 使用第三方备份工具(适合批量/定期备份)
- 备份到其他 Git 托管平台(异地容灾)
- 使用 GitHub Archive(只读备份)
- 注意点
- 推荐组合方案(长期自动备份)
备份GitHub上的开源项目主要有以下几种方法,你可以根据需求选择:
使用 git clone 本地备份(最基础)
将仓库完整克隆到本地,包括所有分支、标签和提交历史。
# 标准克隆(默认只克隆默认分支) git clone https://github.com/用户名/仓库名.git # 克隆所有分支和完整历史(推荐用于备份) git clone --mirror https://github.com/用户名/仓库名.git # 或使用 --bare(仅仓库数据,不带工作目录) git clone --bare https://github.com/用户名/仓库名.git
- 优点:零成本、离线可用、可随时推送到其他平台。
- 缺点:手动操作,需要定期更新(
git fetch --all)。
使用 GitHub 官方备份工具(推荐)
a. 通过 GitHub 导出功能(适合单个仓库或账号)
- 进入仓库主页 → 点击 Code → 选择 Download ZIP(仅快照,不含历史)。
- 若要完整备份账号所有仓库:进入 GitHub Settings → Account → Export account,请求包含所有仓库的完整数据包(可能需要等待几天)。
b. 使用 gh 命令行工具(自动化脚本)
安装 GitHub CLI 后:
# 备份单个仓库(所有分支和标签)
gh repo clone 用户名/仓库名 -- --mirror
# 备份用户所有公开仓库(需要先列出仓库)
gh repo list 用户名 --limit 1000 --json nameWithOwner | jq -r '.[].nameWithOwner' | xargs -I {} gh repo clone {} -- --mirror
使用第三方备份工具(适合批量/定期备份)
- GitBackup:专业备份工具,支持增量、加密、多平台推送。
pip install gitbackup gitbackup --github-username 你的用户名 --token 你的GitHubToken --backup-path ./backup
- Gitea/GitLab 自托管:将 GitHub 仓库镜像同步到自己的 Git 服务器(支持 Webhook 自动同步)。
备份到其他 Git 托管平台(异地容灾)
将仓库镜像推送到 GitLab、Bitbucket 或自建 Gitea:
# 克隆包含所有历史的镜像 git clone --mirror https://github.com/原仓库.git # 添加远程并推送(需先在目标平台创建空仓库) cd 仓库名.git git remote add new-origin https://gitlab.com/你的用户名/新仓库名.git git push --mirror new-origin
- 自动化:使用 GitHub Actions 或 GitLab CI 设置定时同步。
使用 GitHub Archive(只读备份)
对于大规模归档,可参考 GitHub Archive 项目,它提供所有公开 GitHub 事件的历史数据(非仓库文件本身)。
注意点
- Token 权限:如果备份私有仓库或需写权限,创建带有
repo和workflow范围的 Personal Access Token。 - LFS 文件:如果仓库使用 Git LFS,单独克隆/备份可能不会下载 LFS 对象,需添加
git lfs fetch --all命令。 - 大型仓库:对于超过 1GB 的仓库,建议使用
--depth 1浅克隆仅备份最新版本(但有丢失历史风险)。
推荐组合方案(长期自动备份)
- 使用
git clone --mirror将仓库镜像到本地服务器。 - 通过 cron 定时任务运行
git fetch --all同步更新。 - 使用 rsync 将本地备份同步到另一台机器或云存储(如 S3、NAS)。
- 关键仓库额外推送到另外一个 Git 平台(如 Gitee 或 GitLab)。
这样即使 GitHub 遇到故障,你仍拥有一个可随时恢复的完整副本。