Git与TortoiseGit使用教程:第三章 Gitee仓库同步到GitHub

0 阅读8分钟

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的"仓库镜像管理"功能,可以配置不同平台之间仓库的分支、标签、提交记录自动同步。它支持三种镜像方向:

方向作用触发方式
PushGitee 仓库镜像到 GitHub(Gitee → GitHub)提交到Gitee时自动同步,或手动点更新
PullGitHub 仓库镜像到 Gitee(GitHub → Gitee)可选"自动镜像"(靠webhook)或"手动镜像"
双向对同一个GitHub仓库同时配置Push和Pull任一边提交都同步到另一边(有丢代码风险

本文主角是 Push 方向:你平时只往Gitee推代码,Gitee自动帮你把仓库同步到GitHub,相当于白捡一个GitHub备份,还顺带解决了国内访问GitHub慢的问题。

会同步的内容包括:分支(Branches)、标签(Tags)、提交记录(Commits)。 在这里插入图片描述

二、准备工作

在配置镜像之前,有两件前置条件必须先满足。

1.绑定 GitHub 账号

进入你的Gitee仓库,点「管理」→ 找到「仓库镜像管理」→ 点「添加镜像」。

如果还没绑定 GitHub 账号,页面会弹窗提示你去绑定。按提示用 GitHub 账号授权登录即可,绑定一次,以后所有仓库都能用。 此处需截图:Gitee弹窗提示"未绑定GitHub账号"的授权页面】

2.申请 GitHub 私人令牌(Personal Access Token)

Gitee推送代码到GitHub,需要GitHub给它一个"通行证",这就是GitHub私人令牌。申请步骤:

  1. 登录与Gitee绑定的GitHub账号;
  2. 点右上角头像 → Settings → 左侧 Developer settingsPersonal access tokens
  3. Generate new token(新版叫 Tokens (classic),选 classic 更稳妥);
  4. Note 随便填,例如 Gitee_Mirror
  5. Select scopes(权限范围)勾选:
    • repo:必选,不勾Gitee就没法读写你的仓库,镜像会直接不可用;
    • admin:repo_hook:可选,只在你需要"Gitee自动从GitHub同步"(Pull方向自动镜像)时才需要,用于自动生成webhook;
  6. 拉到底点 Generate token
  7. 复制生成的令牌并妥善保管。这串字符只显示这一次,关掉页面就再也看不到了。 【此处需截图:GitHub Generate new token 页面,标出repo权限勾选框】

⚠️ 令牌等同于你的GitHub密码,不要截图外传、不要提交到仓库。如果泄露了,回GitHub把这个token删掉重发一个即可。

三、添加 Push 方向镜像(Gitee → GitHub)

这是本文的核心操作,配好之后基本就不用管了。

  1. 进入需要用镜像的仓库 → 「管理」→「仓库镜像管理」→「添加镜像」;
  2. 镜像方向Push
  3. 镜像仓库下拉列表里选你要同步到的那个GitHub仓库(必须是已绑定账号下的仓库);
  4. 个人令牌里粘贴上一步申请的GitHub私人令牌(需含 repo 权限);
  5. 点「添加」保存。 在这里插入图片描述 配置完成后,触发同步有两种方式:
  • 自动:你往Gitee仓库提交代码,Gitee会自动向GitHub同步;
  • 手动:随时在「仓库镜像管理」页面点「更新」按钮强制触发一次。

镜像触发有频率限制:同一个镜像最短更新间隔是 5 分钟,频繁提交不会每次都立刻同步,属正常现象。

Push方向配好后,建议始终把你最新的代码提交到Gitee,剩下的交给它自动同步到GitHub即可。

四、添加 Pull 方向镜像(GitHub → Gitee,可选)

如果你反过来:主要在GitHub上开发,想让Gitee也保持同步,就配Pull方向。

  1. 进入仓库 →「管理」→「仓库镜像管理」→「添加镜像」;
  2. 镜像方向Pull
  3. 镜像仓库下拉选对应的GitHub仓库;
  4. 个人令牌填GitHub私人令牌;
  5. 根据需求决定是否勾选「自动从 GitHub 同步仓库」:
    • 勾选 → Gitee会自动生成webhook实现自动同步,但需要你的令牌包含 admin:repo_hook 权限,否则添加失败;
    • 不勾 → 只手动点「更新」才同步;
  6. 点「添加」。

如果勾选自动同步后添加失败,大概率是令牌缺 admin:repo_hook 权限。两个办法:要么重新申请一个带该权限的令牌;要么取消勾选「自动同步」,先手动同步(手动方式不需要这个权限),再按第七节手动配webhook。

Pull方向配好后,推送代码到GitHub镜像仓库会触发同步,或手动点「更新」。

五、双向镜像与注意事项

对同一个GitHub仓库同时配置Push和Pull,就是双向镜像——任一边提交都会同步到另一边。

⚠️ 双向镜像目前存在代码丢失风险,请谨慎使用! 官方建议:

  1. 不要在同一时间往Gitee和GitHub镜像仓库提交代码;
  2. 尽量保证两边的提交间隔大于 30 分钟

使用仓库镜像时,还有几条硬规矩必须心里有数:

  1. 只支持镜像已绑定 GitHub 账号授权访问的仓库;
  2. 更新请求一旦发出,除非连续失败被强制停止,否则无法中断,操作前确认清楚;
  3. 暂不支持同步 Git-LFS(大文件);
  4. 同步超过 30 分钟视为超时,大型仓库不建议用镜像方式同步;
  5. 镜像操作会覆盖目标仓库的分支、标签和提交记录,重要仓库注意备份。

六、手动更新与强制停止

手动更新:无论何时,在「仓库镜像管理」页面点对应镜像的「更新」按钮,就能发起一次同步。

更新请求发出后无法手动停止,且每个镜像最短间隔 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方向镜像的自动同步。

分三步:

  1. 申请Gitee私人令牌(需 project 权限):Gitee头像 → 设置 → 私人令牌 → 生成,描述随便填(如 Gitee_Mirror),勾选 project 权限,复制保存;
  2. 配置webhook:进入GitHub镜像仓库 → SettingsWebhooksAdd 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 typeapplication/json
    • 触发事件选 Just the push event.
    • 确保 Active 勾选,点 Add webhook
  3. 测试:保存后GitHub会自动发测试请求,看列表里webhook的图标判断是否正常(正常为绿色对勾,不正常请仔细核对Payload URL)。

(4)常见错误提示对照

错误提示原因 / 解决办法
未找到此仓库镜像仓库被删除或改了名字,检查仓库是否存在
无效的私人令牌令牌复制不完整或输错,重新粘贴
无权限的私人令牌令牌缺 repo 授权,重新申请带 repo 的令牌
仓库正在读写中,请稍后重试Push或Pull镜像正在更新中,等更新结束再操作

总结

要点回顾:

  1. 核心动作是添加 Push 方向镜像:Gitee仓库「管理」→「仓库镜像管理」→「添加镜像」→ 方向选Push、选GitHub仓库、填GitHub令牌(repo权限);
  2. 前置两步不能少:先绑定GitHub账号,再申请带 repo 权限的GitHub私人令牌(只显示一次,务必存好);
  3. 配好就自动同步:提交到Gitee,Gitee 5 分钟内自动同步到GitHub,不用手动推两遍;
  4. 反向(GitHub→Gitee)用 Pull 方向,自动同步需令牌带 admin:repo_hook 权限;
  5. 双向镜像慎开,有丢代码风险,别两边同时提交。

有了前三章,从安装、命令、图形界面到跨平台同步,Git这套工具链就算完整了。建议日常开发只往Gitee推,让镜像帮你维护GitHub那份,省心又多一份备份。

参考文章: Gitee 帮助中心:仓库镜像管理(Gitee<->Github 双向同步) TortoiseGit-使用教程(图文详细版) Git教程 SSH keys配置 Git详细安装教程 gitee上传代码(生成SSH公钥)