由于项目发展规划需求,需要把原来在svn上的代码迁移到gitlab仓库,同时需要保留原提交记录等关键信息,由于这样的需求并不常见,所以记录一下具体的操作流程,以免以后遇到再做重复工作;

1.创建一个文件夹如gitRepo,进入该文件执行如下命令

git svn clone --stdlayout {your project's svn url}
#如:git svn clone --stdlayout svn://svnserver/prodemo

2018-06-13_163655.png

上述命令执行后,可能需要认证即需要输入用户名及密码,此时按照提示操作即可,此外该命令执行比较慢,因为它是从项目第一个版本的第一条记录开始clone,并有大量log输出,没意义等待执行完毕即可,这个过程可以去喝杯茶;

2.进入clone下来的项目目录

即有.git文件夹的那个,执行如下命令

git remote -v

查看远程仓库,如果有的话先删掉它,因为要重新设置远程仓库地址,以免有干扰

git remote rm origin

3.添加git远程仓库地址

git remote add origin git@x.x.x.x/project-name.git

4.推送到远程仓库

git add .
git commit
git push -u origin master
#或者
git push -u origin --all
git push -u origin --tags

5.Congratulations,完成了!

2018-06-13_170837.png

6.补充一点

拉取远程仓库全部分支,并创建本地对应分支

git命令查看所有远程分支

git branch -r

拉取远程分支并创建本地分支

git checkout -b branchName origin/branchName
#如 git checkout -b dev origin/dev

或者

git fetch origin branchName:branchName

两者的区别就是第二种fetch不会自动切换到对应的分支,需要手动执行 git checkout branchName


参考链接:

1.SVN项目迁移到Git上(并带有完整的提交记录)

2.从SVN迁移代码到Git实践总结