Git与TortoiseGit使用教程:第三章 Gitee仓库同步到GitHub
Git与TortoiseGit使用教程
第一章 Git的安装及SSH公钥配置 第二章 Git常用命令及TortoiseGit使用教程 第三章 Gitee仓库同步到GitHub(本文)
@TOC
前言
上一章把Git命令和TortoiseGit的用法都过了一遍,日常提交、拉取、解决冲突这趟活儿已经能跑了。但有一个很现实的需求:很多人一手Gitee、一手GitHub——Gitee国内访问快、适合日常推拉,GitHub国际影响力大、开源项目基本都在这。 手动在两边各推一遍太累,所以这一章讲如何用Gitee自带的"仓库镜像管理"功能,把Gitee的仓库自动同步到GitHub,顺便也把反向(GitHub→Gitee)和双向同步说清楚。 本文操作全在网页端完成,不需要命令行,跟着点就行。环境依然是Windows,账号以Gitee + GitHub为例。
一、镜像管理是做什么的
Gitee的"仓库镜像管理"功能,可以配置不同平台之间仓库的分支、标签、提交记录自动同步。它支持三种镜像方向:
| 方向 | 作用 | 触发方式 |
|---|---|---|
| Push | 把 Gitee 仓库镜像到 GitHub(Gitee → GitHub) | 提交到Gitee时自动同步,或手动点更新 |
| Pull | 把 GitHub 仓库镜像到 Gitee(GitHub → Gitee) | 可选"自动镜像"(靠webhook)或"手动镜像" |
| 双向 | 对同一个GitHub仓库同时配置Push和Pull | 任一边提交都同步到另一边(有丢代码风险) |
本文主角是 Push 方向:你平时只往Gitee推代码,Gitee自动帮你把仓库同步到GitHub,相当于白捡一个GitHub备份,还顺带解决了国内访问GitHub慢的问题。
会同步的内容包括:分支(Branches)、标签(Tags)、提交记录(Commits)。
二、准备工作
在配置镜像之前,有两件前置条件必须先满足。
1.绑定 GitHub 账号
进入你的Gitee仓库,点「管理」→ 找到「仓库镜像管理」→ 点「添加镜像」。
如果还没绑定 GitHub 账号,页面会弹窗提示你去绑定。按提示用 GitHub 账号授权登录即可,绑定一次,以后所有仓库都能用。
2.申请 GitHub 私人令牌(Personal Access Token)
Gitee推送代码到GitHub,需要GitHub给它一个"通行证",这就是GitHub私人令牌。申请步骤:
- 登录与Gitee绑定的GitHub账号;
- 点右上角头像 → Settings → 左侧 Developer settings → Personal access tokens;
- 点 Generate new token(新版叫
Tokens (classic),选 classic 更稳妥); Note随便填,例如Gitee_Mirror;Select scopes(权限范围)勾选:repo:必选,不勾Gitee就没法读写你的仓库,镜像会直接不可用;admin:repo_hook:可选,只在你需要"Gitee自动从GitHub同步"(Pull方向自动镜像)时才需要,用于自动生成webhook;
- 拉到底点 Generate token;
- 复制生成的令牌并妥善保管。这串字符只显示这一次,关掉页面就再也看不到了。
⚠️ 令牌等同于你的GitHub密码,不要截图外传、不要提交到仓库。如果泄露了,回GitHub把这个token删掉重发一个即可。
三、添加 Push 方向镜像(Gitee → GitHub)
这是本文的核心操作,配好之后基本就不用管了。
- 进入需要用镜像的仓库 → 「管理」→「仓库镜像管理」→「添加镜像」;
- 镜像方向选
Push; - 镜像仓库下拉列表里选你要同步到的那个GitHub仓库(必须是已绑定账号下的仓库);
- 个人令牌里粘贴上一步申请的GitHub私人令牌(需含
repo权限); - 点「添加」保存。
配置完成后,触发同步有两种方式:
- 自动:你往Gitee仓库提交代码,Gitee会自动向GitHub同步;
- 手动:随时在「仓库镜像管理」页面点「更新」按钮强制触发一次。
镜像触发有频率限制:同一个镜像最短更新间隔是 5 分钟,频繁提交不会每次都立刻同步,属正常现象。
Push方向配好后,建议始终把你最新的代码提交到Gitee,剩下的交给它自动同步到GitHub即可。
四、添加 Pull 方向镜像(GitHub → Gitee,可选)
如果你反过来:主要在GitHub上开发,想让Gitee也保持同步,就配Pull方向。
- 进入仓库 →「管理」→「仓库镜像管理」→「添加镜像」;
- 镜像方向选
Pull; - 镜像仓库下拉选对应的GitHub仓库;
- 个人令牌填GitHub私人令牌;
- 根据需求决定是否勾选「自动从 GitHub 同步仓库」:
- 勾选 → Gitee会自动生成webhook实现自动同步,但需要你的令牌包含
admin:repo_hook权限,否则添加失败; - 不勾 → 只手动点「更新」才同步;
- 勾选 → Gitee会自动生成webhook实现自动同步,但需要你的令牌包含
- 点「添加」。
如果勾选自动同步后添加失败,大概率是令牌缺
admin:repo_hook权限。两个办法:要么重新申请一个带该权限的令牌;要么取消勾选「自动同步」,先手动同步(手动方式不需要这个权限),再按第七节手动配webhook。
Pull方向配好后,推送代码到GitHub镜像仓库会触发同步,或手动点「更新」。
五、双向镜像与注意事项
对同一个GitHub仓库同时配置Push和Pull,就是双向镜像——任一边提交都会同步到另一边。
⚠️ 双向镜像目前存在代码丢失风险,请谨慎使用! 官方建议:
- 不要在同一时间往Gitee和GitHub镜像仓库提交代码;
- 尽量保证两边的提交间隔大于 30 分钟。
使用仓库镜像时,还有几条硬规矩必须心里有数:
- 只支持镜像已绑定 GitHub 账号授权访问的仓库;
- 更新请求一旦发出,除非连续失败被强制停止,否则无法中断,操作前确认清楚;
- 暂不支持同步 Git-LFS(大文件);
- 同步超过 30 分钟视为超时,大型仓库不建议用镜像方式同步;
- 镜像操作会覆盖目标仓库的分支、标签和提交记录,重要仓库注意备份。
六、手动更新与强制停止
手动更新:无论何时,在「仓库镜像管理」页面点对应镜像的「更新」按钮,就能发起一次同步。
更新请求发出后无法手动停止,且每个镜像最短间隔 5 分钟。 强制停止:如果连续 5 次镜像都失败,系统会强制停止该镜像,并在镜像列表里显示最后一次失败的错误信息。强制停止后,最快 5 分钟后才能再次发起更新。
七、常见问题
(1)如何申请 / 重新申请 GitHub 私人令牌?
见本文第二节第2小节。记住 repo 必选;要自动从GitHub同步(Pull自动镜像)就再加 admin:repo_hook。
(2)为什么推送到 GitHub 会失败?
如果GitHub账号开启了 Keep my email addresses private(邮箱保密),且你在Gitee上用这个邮箱push代码,Gitee的推送会受该功能限制而失败。解决:在GitHub邮箱设置里关闭保密,或换一个未开启保密的邮箱作为提交邮箱。
(3)Pull方向自动同步添加失败 / 误删了webhook,如何手动配置?
Webhook用于实现Pull方向镜像的自动同步。
分三步:
- 申请Gitee私人令牌(需
project权限):Gitee头像 → 设置 → 私人令牌 → 生成,描述随便填(如Gitee_Mirror),勾选project权限,复制保存; - 配置webhook:进入GitHub镜像仓库 →
Settings→Webhooks→Add webhook,按格式填Payload URL:https://gitee.com/api/v5/repos/:owner/:repo/remote_mirror/pull?access_token=:personal access token:owner:仓库归属(你的GitHub用户名);:repo:仓库名称;:personal access token:上面申请的Gitee私人令牌;Content type选application/json;- 触发事件选
Just the push event.; - 确保
Active勾选,点Add webhook;
- 测试:保存后GitHub会自动发测试请求,看列表里webhook的图标判断是否正常(正常为绿色对勾,不正常请仔细核对Payload URL)。
(4)常见错误提示对照
| 错误提示 | 原因 / 解决办法 |
|---|---|
| 未找到此仓库 | 镜像仓库被删除或改了名字,检查仓库是否存在 |
| 无效的私人令牌 | 令牌复制不完整或输错,重新粘贴 |
| 无权限的私人令牌 | 令牌缺 repo 授权,重新申请带 repo 的令牌 |
| 仓库正在读写中,请稍后重试 | Push或Pull镜像正在更新中,等更新结束再操作 |
总结
要点回顾:
- 核心动作是添加 Push 方向镜像:Gitee仓库「管理」→「仓库镜像管理」→「添加镜像」→ 方向选Push、选GitHub仓库、填GitHub令牌(
repo权限); - 前置两步不能少:先绑定GitHub账号,再申请带
repo权限的GitHub私人令牌(只显示一次,务必存好); - 配好就自动同步:提交到Gitee,Gitee 5 分钟内自动同步到GitHub,不用手动推两遍;
- 反向(GitHub→Gitee)用 Pull 方向,自动同步需令牌带
admin:repo_hook权限; - 双向镜像慎开,有丢代码风险,别两边同时提交。
有了前三章,从安装、命令、图形界面到跨平台同步,Git这套工具链就算完整了。建议日常开发只往Gitee推,让镜像帮你维护GitHub那份,省心又多一份备份。
参考文章: Gitee 帮助中心:仓库镜像管理(Gitee<->Github 双向同步) TortoiseGit-使用教程(图文详细版) Git教程 SSH keys配置 Git详细安装教程 gitee上传代码(生成SSH公钥)