GitLab仓库迁移

概述

背景:由于服务器更新,需要把部署在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端看一下项目信息:
在这里插入图片描述
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到哪个服务器,验证:
在这里插入图片描述
光标一直在闪烁,提示选择一个远程origin。

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

仓库迁移操作简化

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

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

Git Bash操作示意图(下图Everything up-to-date是因为我之前已经操作过):
在这里插入图片描述

借助于IDEA进一步简化操作

首先依次点击VCS—Git—Remotes,打开如下操作框:
在这里插入图片描述
看右侧的滑动条,需要迁移的项目太多。这里一条条修改URL地址。

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

此处,几经尝试,貌似没有更好的方法:将每个Repository都加一点更改
在这里插入图片描述
注:上面截图里面的commit 面板在较新版本的IDEA才有,貌似是2020.1.4。

然后一次性push全部代码:
在这里插入图片描述

使用脚本

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

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

参考

posted @ 2021-06-22 12:47  johnny233  阅读(41)  评论(0编辑  收藏  举报  来源