概述
背景:由于服务器更新,需要把部署在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。
使用脚本
一遍GitLab仓库迁移工作是运维在做,运维肯定是使用脚本来解决问题。
- 修改IP:
find 'D:\test' -type f -name "config" -exec sed -i 's/192.168.20.149/192.168.0.149/g' "{}" +;
- 推送代码:
参考
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142218.html