svn多个项目迁移到同一个git的不同分支下的方法

一、前言

最近要把svn多个项目迁移到同一个git的不同分支下。

如果只迁移代码的话,那当然好说;

问题是想把svn多个项目的提交记录也迁移到git,还是迁移到同一个git的不同分支下,就有点麻烦了。

在此总结下具体操作流程。

二、迁移目标

SVN项目my_project,有2个url,分别是生产测试的代码:

http://svncloud.it.com/my_project/prod
http://svncloud.it.com/my_project/test

要迁移到同一个git的main分支test分支下,git的url为:

http://gitlab.it.com/my_project/my_project.git

三、具体操作流程

1.假设为windows环境,确认安装了TortoiseSVN,TortoiseGit,Git这3个软件

2.进入我的电脑的某个文件夹,右击->Git Bash Here,打开cmd窗口,执行命令,获取svn提交账号信息。(其中,url是svn的地址,末尾的./svn2git.txt是保存文件的路径)

svn log http://svncloud.it.com/my_project/prod -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2"="$2" <"$2"@taikanglife.com>"}' | sort -u > ./svn2git.txt

3.使用git svn命令,把svn项目以git的样式下载到本地,提交记录使用刚才生成的提交账号的信息文件。(其中,url还是svn的地址,末尾的./my_project是项目下载到本地后保存的路径)

git svn clone http://svncloud.it.com/my_project/prod --no-metadata --authors-file="svn2git.txt" ./my_project

4.登录gitlab,创建一个新的项目,并且在这个项目中准备2个分支。
默认会创建一个main分支(用来提交生产prod代码),然后自己手动创建一个test分支。
然后得到一个git地址,例如:

http://gitlab.it.com/my_project/my_project.git

5.现在要把本地的my_project项目,提交到git的main分支下(因为svn下载的是prod项目),操作如下:
进入本地的my_project文件夹,然后windows可以右击->Git Bash Here,打开cmd窗口。

6.因为本地my_project项目,默认是master分支,为了提交到远程git的main分支,首先需要在本地把项目从本地master分支复制到本地main分支(自己新建一个),命令如下:

git branch main
git checkout main

//如果不这样,到时候会报错:error: src refspec main does not match any

7.执行下方命令,提交到git的main分支:

git remote add origin http://gitlab.it.com/my_project/my_project.git
git push origin main  --force

8.如果想把远程git的内容pull到本地,可以使用这个命令:

git pull origin main --allow-unrelated-histories

意思是允许不同的提交历史存在。(如果pull后有冲突,需要自己解决冲突)

9.上方就把svn的prod项目迁移到了git的main分支下;

如果要把svn的test项目迁移到同一个git的test分支下,只需要参考上方的步骤,下载test项目到本地,把main换成test即可。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值