You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自托管GitLab仓库迁移至新实例并保留历史,有无简易方法?

GitLab仓库迁移:除备份恢复外的简便方案

备份恢复并不是唯一可行的迁移方式,针对单仓库或批量仓库的迁移场景,有更轻量化的操作方法,具体如下:

单个仓库迁移(完整保留提交、分支、标签)

方法1:镜像推送法

  1. 在新GitLab实例创建空仓库(不要初始化README、.gitignore等文件)
  2. 在本地或旧服务器克隆旧仓库的裸版本:
    git clone --mirror <旧仓库Git地址>
    
  3. 进入克隆的裸仓库目录,添加新仓库作为远程地址:
    cd <仓库名称>.git
    git remote add new-origin <新仓库Git地址>
    
  4. 推送所有内容至新仓库:
    git push new-origin --mirror
    

该命令会同步所有分支、标签、提交记录,完全复刻旧仓库的完整状态。

方法2:GitLab原生导入功能

若两个GitLab实例网络互通,直接在新GitLab的仓库创建页选择**「Import project」,再选择「GitLab self-managed」**,填入旧仓库地址及访问凭证(私有仓库需提供令牌或SSH密钥),即可自动完成迁移,无需本地操作。

批量迁移多个仓库

通过GitLab API编写脚本批量处理,效率更高:

  1. 调用旧GitLab API获取所有仓库列表:
    curl --header "PRIVATE-TOKEN: <旧实例个人访问令牌>" "https://旧GitLab地址/api/v4/projects?per_page=100"
    
  2. 编写Shell/Python脚本,遍历仓库列表,自动执行镜像推送步骤;或调用新GitLab API创建仓库并发起导入请求。

额外注意事项

  • 若仓库包含LFS对象,需先在旧仓库执行git lfs fetch --all,推送时补充git lfs push new-origin --all
  • 私有仓库迁移前需确保操作账号拥有旧仓库的读取权限、新仓库的写入权限
  • 迁移完成后,建议核对新仓库的分支、标签、提交记录及LFS对象的可用性

内容的提问来源于stack exchange,提问作者MsA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:31:09