多数国内开发者习惯用 Gitee 托管代码,兼顾速度和协作。但项目要开源、面向海外的时候,GitHub 更合适。手工在两个平台重复提交、同步分支太折腾,容易搞乱提交历史,出现冲突或遗漏。
我折腾了一套方法:一次配置,之后只在 Gitee 或 GitHub 一端提交,就能自动同步到另一边。下面记录一下具体步骤,包括完整迁移、保留历史,以及三种自动同步方式。
准备工作
先搞定环境,否则后面会报权限错。
清理掉项目里的密钥、密码、内网配置之类敏感信息,不然同步出去就麻烦了。确保在 Gitee 有管理员权限,GitHub 上也建好仓库,邮箱验证过。
配置 SSH 密钥,方便两边免密码推送:
# 生成密钥,一直回车
ssh-keygen -t ed25519 -C "你的注册邮箱"
# 复制公钥
cat ~/.ssh/id_ed25519.pub
把公钥分别添加到 Gitee 和 GitHub 的 SSH 密钥设置里。
顺手检查下 Git 配置:
git --version
git config --global user.name "你的用户名"
git config --global user.email "你的注册邮箱"
从 Gitee 完整迁移到 GitHub
目标是把所有分支、标签、提交历史原封不动搬过去。最稳妥的办法是在本地克隆 Gitee 仓库,再推送到 GitHub。
- 在 GitHub 新建一个空仓库(别勾选 README 之类的初始化文件)。
- 克隆 Gitee 仓库:
git clone [email protected]:用户名/仓库名.git
cd 仓库名
- 添加 GitHub 远程地址,取名 github:
git remote add github [email protected]:用户名/仓库名.git
git remote -v # 确认一下
- 全量推送:
git push github --all
git push github --tags
推送完刷新 GitHub 页面,代码和提交记录就都有了。
如果手头没有本地环境,也可以用 GitHub 的 Import repository 功能,填 Gitee 地址导入,但有些项目可能导入不完全,个人还是推荐本地克隆的方法。
自动同步:三种方式按需选
1. 本地多远程推送(最省事)
我日常个人项目都用这个。原理简单:给本地仓库的 origin 远程添加多个 push 地址,执行 git push origin 时就会同时推到两个平台。
先给 origin 加上 GitHub 地址:
git remote set-url --add origin [email protected]:用户名/仓库名.git
然后正常提交推送就行:
git add .
git commit -m "..."
git push origin 分支名
以后每次 push 都是双平台同步,几乎零额外操作。唯一要注意的是,如果之前在 origin 已经有其他地址配置,最好先检查。


