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

如何将本地Git仓库完整迁移至新GitLab服务器保留全量提交配置

GitLab本地仓库跨实例迁移操作方案

本方案不需要访问原GitLab服务器A,仅依靠本地留存的完整仓库副本即可完成迁移,全程保留所有Git提交历史、分支、标签、仓库内存储的所有配置文件,不属于新建仓库上传本地文件的实现方式。

前置校验

首先确认本地仓库为完整克隆版本,不存在历史缺失:
在本地仓库目录下执行命令:

git rev-parse --is-shallow-repository
  • 返回false:仓库完整,可继续后续操作
  • 返回true:本地为浅克隆副本,缺失部分提交历史,因无法访问A服务器补全数据,无法实现100%历史迁移

步骤1:在GitLab B创建空白目标仓库

登录GitLab B实例新建目标项目,创建时必须取消所有自动初始化选项:不要勾选初始化README文件、不要添加默认LICENSE、不要选择预设.gitignore模板,确保创建完成的仓库是无任何提交、无任何分支的完全空白状态。创建完成后复制该仓库的SSH或HTTP克隆地址备用。

步骤2:调整本地仓库远程配置

在本地仓库的终端中执行命令查看当前远程配置:

git remote -v

默认原远程origin指向GitLab A的地址,可根据使用习惯选择以下两种配置方式之一:

  • 直接替换原有origin地址(后续操作和原使用习惯一致):
    git remote set-url origin <GitLab B空白仓库的克隆地址>
    
  • 保留原A的远程配置,新增指向B的远程节点(命名为gitlab-b):
    git remote add gitlab-b <GitLab B空白仓库的克隆地址>
    

步骤3:全量推送仓库数据到GitLab B

以下命令以替换origin的配置为例,如果使用新增gitlab-b远程的方案,将命令中的origin替换为gitlab-b即可。

  • 推送所有本地分支与完整提交历史:
    git push origin --all
    
  • 推送所有标签:
    git push origin --tags
    
  • 如果原仓库使用Git LFS存储大文件,额外执行LFS数据全量推送:
    git lfs push origin --all
    

注意:如果推送时提示非快进错误,先检查GitLab B的目标仓库是否存在自动生成的初始化提交,必须清空B仓库的所有预置内容后再推送,不要随意添加--force参数强制推送避免数据丢失。

步骤4:迁移结果校验与服务端配置补全

推送完成后在GitLab B的项目页面核对:

  • 提交记录总数、每条提交的作者、时间戳、提交信息与本地完全一致
  • 所有分支、标签完整存在
  • 仓库内存储的配置文件(包括.gitlab-ci.yml、.gitattributes、自定义脚本、项目文档等)会随提交自动同步,无需额外操作

服务端配置说明

以下配置存储在GitLab服务端,不会包含在本地Git仓库副本中,因无法访问A服务器导出配置,需对照之前留存的配置记录在GitLab B上手动重新配置:

  • 项目成员权限、访问令牌、部署密钥
  • 保护分支、保护标签规则
  • WebHook、第三方系统集成配置
  • CI/CD变量、专属Runner绑定配置
  • 项目头像、描述、可见性级别等项目元信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:09:12