GitLab仓库迁移

时间:2022-10-30 09:56:29


概述

背景:由于服务器更新需要,需要把部署在A服务器的GitLab仓库迁移到B服务器上面。

实战

GitLab仓库地址从​​http://192.168.20.149:8090/​​​迁移到​​http://192.168.0.149:8090/​​​。背景知识:项目信息在​​.git/config​​​文件有所显示。先查看一下原始​​.git/config​​文件:

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = http://192.168.20.149:8090/zhsh/file-center.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "dev"]
remote = origin
merge = refs/heads/dev

首先将原来的origin重命名一下:
​​​git remote rename origin origin1​

再指定需要迁移到的目标地址:
​​​git remote add origin http://192.168.0.149:8090/zhsh/file-center.git​

上传到新服务器:
​​​git push origin --all​

这一步,需要先在GitLab Web端创建一下Group,否则报错:

libpng warning: iCCP: cHRM chunk does not match sRGB
remote: The project you were looking for could not be found.
fatal: repository 'http://192.168.0.149:8090/zhsh/file-center.git/' not found

​git push origin --all​​重试,成功。去GitLab Web端看一下项目信息:

GitLab仓库迁移


commit提交记录都有保留,目的达到。

再来看看​​.git/config​​文件,已经更新为:

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin1"]
url = http://192.168.20.149:8090/zhsh/file-center.git
fetch = +refs/heads/*:refs/remotes/origin1/*
[branch "master"]
remote = origin1
merge = refs/heads/master
[branch "dev"]
remote = origin1
merge = refs/heads/dev
[remote "origin"]
url = http://192.168.0.149:8090/zhsh/file-center.git
fetch = +refs/heads/*:refs/remotes/origin/*

进阶

删除无用的origin

上面那个​​.git/config​​文件,可见该项目有两个远程origin,猜测以后在push代码时,需要指定push到哪个服务器,验证:

GitLab仓库迁移


光标一直在闪烁,提示选择一个远程origin。

如果旧的origin,即上面重命名的origin1不再需要,可以直接修改​​.git/config​​文件,删除origin1相关信息。这样就可以避免选择origin。

仓库迁移操作简化

故而,如果我们的仓库里面的项目很多的情况下,依次执行上述3条命令,简直就是体力活。

故而直接打开本地磁盘的项目文件夹,依次修改全部项目的​​.git​​​隐藏目录下面的​​config​​​文件,然后执行命令​​git push origin --all​​。

Git Bash操作示意图(下图Everything up-to-date是因为我之前已经操作过):

GitLab仓库迁移

借助于IDEA进一步简化操作

首先依次点击VCS—Git—Remotes,打开如下操作框:

GitLab仓库迁移


看右侧的滑动条,需要迁移的项目太多。这里一条条修改URL地址。

修改之后,将代码push到新的远程仓库。

此处,几经尝试,貌似没有更好的方法:将每个Repository都加一点更改

GitLab仓库迁移


注:上面截图里面的commit 面板在较新版本的IDEA才有,貌似是2020.1.4。然后一次性push全部代码:

GitLab仓库迁移

使用脚本

一遍GitLab仓库迁移工作是运维在做,运维肯定是使用脚本来解决问题。

  1. 修改IP:
    ​​​find 'D:\test' -type f -name "config" -exec sed -i 's/192.168.20.149/192.168.0.149/g' "{}" +;​
  2. 推送代码:

参考