从自建Github实例迁移仓库到SaaS版Github

本文详细记录了仓库迁移的三个关键步骤。首先,在SaaS端创建空白仓库,并生成具有内容读写权限的个人访问令牌(PAT)。其次,通过git clone --bare命令下载旧仓库的Git数据库,并利用git push --mirror将完整代码及历史记录镜像推送到新仓库。最后,在本地开发环境中执行git remote set-url命令更新远程仓库地址,经git fetch验证无误后即完成迁移工作。

背景:公司本来是自建的Github企业版,但是开了SaaS的Github企业版。有人联系我让我将仓库进行迁移。

1. 新建一个新的空仓库

新建一个仓库,确认不添加README,.gitignore和许可文件。

2. 新建个人访问令牌

在新的SaaS企业版的Github上新建个人访问令牌。

  1. 点击右侧头像找到设置选项。
  2. 到左下角找到开发者选项。
  3. 找到令牌选项。

使用细化权限的令牌(Fine-Grained Token)。

  1. 设置名字和描述
  2. 选择公开库,所有库,还是具体的库。我选了一个库。

因为我只是希望能推代码到仓库里,所以选择了Content的读写权限。

3. 迁移旧项目

新建一个临时文件夹,克隆旧项目的Git数据库。

bash 复制代码
> git clone --bare https://old_project_url

# 克隆下来的文件结构

    Directory: C:\temp_folder\项目

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----            2026/2/4    17:25                hooks
d----            2026/2/4    17:25                info
d----            2026/2/4    17:25                objects
d----            2026/2/4    17:25                refs
-a---            2026/2/4    17:25            175 config
-a---            2026/2/4    17:25             73 description
-a---            2026/2/4    17:25             23 HEAD
-a---            2026/2/4    17:25            105 packed-refs

将Git数据库推到新的仓库,等有验证的弹窗的时候,就得上刚才生成的令牌了。

bash 复制代码
> git push --mirror https://new_project_url

Enumerating objects: 730, done.
Counting objects: 100% (730/730), done.
Delta compression using up to 8 threads
Compressing objects: 100% (286/286), done.
Writing objects: 100% (730/730), 673.26 KiB | 42.08 MiB/s, done.
Total 730 (delta 399), reused 730 (delta 399), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (399/399), done.
To https://new_project_url
 * [new branch]      master -> master

这时再查看你的Github EMU的仓库,代码已经在那了。

4. 更新本地代码的远端Github仓库地址

更新远端仓库的名字,查看更新是否成功。最后尝试fetch一下,如果没有报错,就证明迁移成功了。

bash 复制代码
> git remote set-url origin https://new_project_url

> git remote -v                                                   
origin  https://new_project_url (fetch)
origin  https://new_project_url (push)

> git fetch origin

📚 延伸阅读

更多内容持续更新于我的博客:https://www.zenseek.site

相关推荐
用户别睡觉10 小时前
有时候放弃也是一种收获
人工智能·github
愚坤11 小时前
前端真有意思,JS还能独立做项目?
前端·javascript·github
dong_junshuai12 小时前
每天一个开源项目#157 Modern Web Guidance:让Agent按需查浏览器能力
github
一条Go16 小时前
OnCall 时段路由:跨午夜、左闭右开与「Local 不是时区」
后端·架构·github
黎羽_1 天前
《开源 PR 实战》系列(三):22 个 PR 之后,批量提 PR 的打法
开源·github·代码评审·pull request·协作
fthux1 天前
总想着“忙完再休息”?让 Tick Rest 提醒你,先歇一会儿
开源·github·mac·swift·提醒·消息提醒·tick rest·tick rest for mac·消息提醒app
dong_junshuai1 天前
每天一个开源项目#156 Astryx:主题编译、异步按钮与源码接管
github
逛逛GitHub2 天前
把你的 AirPods 当鼠标用,这 3 个黑科技 GitHub 开源项目有趣。
github
徐小夕2 天前
开源Vector-Graph-RAG:向量+图谱双引擎,打破纯向量RAG的效果天花板
前端·vue.js·github
GitHub实测笔记2 天前
zoxide 本机实测:一万条记查询中 5.7ms0.10 版 import --from
github