git项目快速迁移

因为最近买了一个迷你服务器

于是在这台服务器上部署了各种私服,数据还是存在自己的真实服务器里比较放心。一方面自己购买的服务器硬件配置比较高,一方面数据可以随时下云。本地服务器与云服务器通过反向代理技术通讯,云服务器与本地服务器搭建反向代理的过程改篇再介绍,本篇主要记录一下我在签移git项目时的技巧。

首先我在迷你服务器中使用docker部署了gitlab服务,我有一个gitlab服务在前前前公司的一个服务器里,我很长时间没有使用过了,此时我想将我之前托管的代码全部签移到新gitlab中,但是原gitlab是传统安装方式部署的,非docker部署,版本也与新gitlab不一致,所已不能通过备份+恢复的方式迁移项目。

那只能通过clone项目=>添加remote地址=>推送到新仓库的方式迁移了,一步一个命令太麻烦,能不能一键搞定呢?在gitlab新建项目的界面留意到了一条命令:

git push --set-upstream ssh://git@gitlab.v.itmx.xyz/itmx/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)

这条命令是在本地已有git仓库时执行的,将当前项目推送到指定的远程仓库中。所以还是要先从原gitlabclone项目到本地,再执行此命令。

由于我要迁移多个项目,所以整合出如下命令

for name in projectA projectB projectC projectD projectE do
git clone git@gitlab.xxx.net:itmx/${name}.git
cd ${name}
git push --set-upstream ssh://git@gitlab.v.itmx.xyz/itmx/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
cd .. 
done

打开git终端,贴入如上命令,搞定。

记得配置ssh keys

生成命令ssh-keygen -t rsa -C "your.email@example.com" -b 4096

获取公钥cat ~/.ssh/id_rsa.pub | clip

然后将得到的公钥分别添加到新旧gitlab中。

评论