换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程

使用 TortoiseGit 迁移仓库指南

使用 TortoiseGit(小乌龟) 将仓库完整迁移到另一个 Git 托管平台(如从 GitHub 迁移到 GitLab、Gitee 等),最核心的目标是完整保留所有分支、历史提交记录(Commit History)和标签(Tags)。

推荐使用方法一(纯版本库克隆与推送),这是最规范、能完整保留所有分支与标签的迁移方案。

说明:本指南只迁移 Git 数据(分支、标签、提交历史),不包含 Issues、Pull Request、Wiki、Releases 等平台数据。


迁移前准备

  1. 在新平台创建完全空白的仓库 :
    • 进入新托管平台(如 GitLab、GitHub 等),点击新建仓库。
    • 切勿勾选"使用 README 初始化"、"添加 .gitignore"或"选择许可证"。
    • 保持仓库完全空白(Empty Repository),并复制其克隆地址(HTTP/HTTPS 或 SSH)。
  2. 配置认证权限 :
    • 确保你拥有新平台的推送权限。
    • 如果使用 HTTPS,请准备好个人访问令牌(Personal Access Token / App Token);部分平台(如 GitHub)已不再支持使用账号密码进行 Git 推送。

方法一:纯版本库克隆与推送(推荐,分支与标签最完整)

常规克隆只会创建并检出默认分支(如 main 或 master)的本地分支,其他分支仅以远程跟踪分支(origin/xxx)的形式存在,不会被 Push all branches 一并推送;而纯版本库(Bare Repo)会将原平台的所有分支与标签直接作为本地引用完整下载,因此迁移最完整。

步骤 1:使用 TortoiseGit 克隆为纯版本库

  1. 在电脑任意空白目录下,点击鼠标右键,选择 Git Clone... (Git 克隆)。
  2. URL :输入旧托管平台的仓库地址。
  3. Directory (目录) :系统会自动生成一个文件夹路径(文件夹名一般为仓库名,文件夹名不影响迁移)。
  4. 关键勾选 :务必勾选界面下方的 Clone into Bare Repo (克隆成纯版本库)。
  5. 点击 OK (确定) 开始克隆。 验证提示 :克隆完成后打开该文件夹,里面直接是 HEAD、config、objects、refs 等文件/文件夹,而看不到具体的项目源码,这说明纯版本库克隆正确,所有分支和标签已完整下载。

步骤 2:推送到新托管平台

  1. 进入刚刚生成的版本库文件夹内部,在空白处点击鼠标右键(或直接在该文件夹上右键),选择 TortoiseGit -> Push... (推送...)。
  2. 在弹出的推送窗口中进行设置:
    • Destination (目标) :
      • 选择单选框 Arbitrary URL (其他 URL) ,在右侧输入框中粘贴新托管平台的空仓库地址。
    • Ref (引用) :
      • 勾选最上方的 Push all branches (推送所有分支) 。 提示:勾选后,下方的"本地"和"远端"输入框会自动变灰,无需再手动填写。
    • Options (选项) :
      • 勾选 Include Tags (包括标签)。
  3. 点击 OK (确定) 执行推送。
  4. 在弹出的进度窗口中,如果提示输入新平台的用户名和密码(或访问令牌),按要求输入即可。
  5. 推送成功后,新平台就会拥有旧仓库的所有分支、标签及完整的提交历史。

步骤 3:后续清理与日常使用

  • 迁移完成后,请先确认新平台已包含全部分支与标签,再删除本地那个临时中转的纯版本库文件夹。
  • 团队成员需要开发时,直接通过 TortoiseGit 重新 Git Clone... (Git 克隆) 新平台的地址即可;已有本地仓库的成员,也可以按下文方法二的步骤 1,将 origin 改为新平台地址。

方法二:直接修改已有本地仓库的 Remote(适合单分支/个人项目)

如果你已有一个正在使用的本地仓库,且项目只有单一分支(如只有 main),可以采用此方法。

注意 :这种方法只会推送存在于你本地的分支 。如果原平台有多个分支,而你本地只检出过 main,则其他分支不会被推送到新平台。如有多个远程分支,务必优先选用方法一。

步骤 1:修改或添加新的远程仓库地址

  1. 在现有的本地项目文件夹空白处点击右键,选择 TortoiseGit -> Settings (设置)。
  2. 在弹出的设置窗口中,依次展开 Git -> Remote (远端)。
  3. 选中默认的 origin,在右侧 URL 输入框中,将旧地址替换为新平台的仓库地址 。 提示 :也可以在 Remote 框中输入一个新名字(如 new-origin),填入新地址并点击 Add New/Save,这样可以同时保留新旧两个远程仓库。
  4. 点击 Apply (应用) 并点击 OK (确定)。

步骤 2:推送代码和标签

  1. 在项目文件夹空白处右键 -> TortoiseGit -> Push... (推送...)。
  2. Destination (目标) :确认 Remote 指向新平台(即步骤 1 中修改的 origin,或新增的 new-origin);如果跳过了步骤 1,也可以改选 Arbitrary URL (其他 URL),直接填入新地址。
  3. Ref (引用) :勾选 Push all branches (推送所有分支)。
  4. Options (选项) :勾选 Include Tags (包括标签)。
  5. 点击 OK (确定) 推送。

常见问题与避坑指南

  1. 推送被拒绝(Updates were rejected... / non-fast-forward) :
    • 原因 :在新平台创建仓库时,顺手勾选了生成 README.md、.gitignore 或 License,导致新旧仓库的起点不一致。
    • 解决办法 :最稳妥的做法是删掉新平台上刚建的仓库,重新创建一个完全空白 的仓库;或者在 TortoiseGit 推送对话框的选项中勾选 Force (强制)(前提是新平台未对分支开启保护)。
  2. 账号密码认证失败 :
    • GitHub、GitLab 等平台使用 HTTPS 时,通常需要使用平台生成的个人访问令牌(Personal Access Token) 代替普通登录密码。
  3. 包含 Git LFS 大文件 :
    • 如果旧仓库使用了 Git LFS 管理大型二进制文件,纯版本库克隆通常不会下载 LFS 大文件实体,仅做常规 Git Push 可能导致新仓库缺少指针对应的大文件。请在克隆完成后,于纯版本库目录(方法二则为本地仓库目录)内执行 git lfs fetch --all,推送完成后再执行 git lfs push --all <新地址>(新平台需已启用 LFS)。
相关推荐
chushiyunen2 小时前
autoHotKey、windows自动化快捷键工具
运维·windows·自动化
燃烧的枫3 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
猪八宅百炼成仙4 小时前
让 AI 帮你清理电脑而不翻车:一个 Windows 体检调优 Skill 的工程化设计
人工智能·windows
鱼宵5 小时前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21
kingx36 小时前
Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复
数据库·windows·提权·应急响应·加固
echome8889 小时前
Git 日常救急:撤销提交、找回误删文件和解决冲突
git·版本控制
海域云SeaArea_10 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php
赵民勇13 小时前
Git命令详解
git
IsITGirl13 小时前
VMware Fusion(Mac)Windows ARM 虚拟机 NAT (vmnet8) 报错解决记录
windows·macos·.net·桥接模式