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仓库时执行的,将当前项目推送到指定的远程仓库中。所以还是要先从原gitlab
中clone
项目到本地,再执行此命令。
由于我要迁移多个项目,所以整合出如下命令
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中。