SVN迁移Git
2017-01-14 本文已影响284人
CoderHG
前缘
SVN与Git,哪个最牛逼?现在要将之前的在SVN管理的项目迁移到Gitlab上,简单记录一下简单粗暴的方法.
具体方案有二:
- 不保留在SVN上的记录,只是迁移有效的代码.
- 保留SVN上提交的所有记录
第一种方案,很简单,不做介绍.接下来看看第二种方案的实现.
前提:
- 有一个SVN地址,比如:http://svnusername@localhost/svn/project/Demo.
- 在Gitlab有一个空的项目地址,比如:git@git.oschina.net:CoderHG/Demo.git
具体的步骤如下:##
-
1.打开终端
-
2.输入: **git svn clone h ttp://svnusername@localhost/svn/project/Demo **
- 这一步的条件是git svn要可用
- 可能会让你输入svnusername的密码
- 这个步骤要花多长时间,主要取决于项目的大小
-
3.已经一定时间之后,cd进入与.git同级目录,执行git log.如果能看到在SVN上的提交记录,就说明成功的将SVN换成Git的本地仓库了.(.git是隐藏文件,点击如何查看隐藏文件)
-
4.第2步结束,在.git同级目录添加.gitignore文件
- 一定要在这个时候添加这个.gitignore文件,千万别提交到Gitlab上之后在提交,否则即使添加也无效.
-
5.如果之前你的SVN的管理很规范,很标准的话,这一步也很重要,你只需要在终端依次执行即可:
- cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
- rm -Rf .git/refs/remotes/tags
- cp -Rf .git/refs/remotes/* .git/refs/heads/
- rm -Rf .git/refs/remotes
到这里,SVN上的所有东西在本地的仓库中几乎都有了.未完待续,开始提交到Gitlab服务器.
-
**6.本地仓库与远程仓库关联,在终端执行: git remote add origin git@git.oschina.net:CoderHG/Demo.git **
-
7.将本地仓库push到远程仓库,在终端执行: git push --set-upstream origin master
如果一切顺利的话,到这里就OK了,过程还会有很多的小细节,很简单呢就没有介绍,比如如何配置ssh,一般在配置的地方总是会有说明文档的.如果有大神发现有不合理的地方,欢迎指教!谢谢~**
不知,便是道.既不知道.