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

序言

公司之前一直在使用SVN, 现在想要更换为Git, 所以就面临着代码的迁移, 当时第一个想法就是先把项目从SVN上check下来, 然后断开与SVN的关联(就是删除.svn文件), 然后再push到Git仓库中, 但是这样操作的话就有一个问题, 就是之前在SVN上的提交记录就全部没有了, 想到这里不免的感伤一下, 这样对以后代码的追踪非常的麻烦, 所以就考虑有没有一种将SVN中的项目迁移到Git上的方法呢(保留以前完整的提交记录), 终于, 功夫不负有心人, 最后发现Git提供了这样一个功能(这里不得不说Git还是很强大的).

步骤

为了更直观的让大家看到这个步骤, 我这里就新创建一个项目, 并和SVN中的一个仓库关联在一起(这些步骤在这里就不再过多描述了, 不了解的同学可以自行百度一下, 这方面的文章有很多), 然后再将这个项目迁移到Git上面(这里以GitHub为例). 好了, 废话不多话, 直接上步骤:

1. 在任意位置创建一个空的文件夹

我这里是在桌面创建了一个空的文件夹 GitTest , 作为一个Git本地仓库, 用来存放从SVN上迁移过来的代码.
SVN项目迁移到Git上(并带有完整的提交记录)

2. 在这个文件中打开Git Bash

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

3. 在GitBash中输入clone的命令

在Bash中输入如下指令, 就会开始迁移”git svn clone svnUrl”, 其中里面的svnUrl就是你要迁移的项目的SVN地址, 如我的SVN地址是 C:/Users/Mr Zhang/Desktop/gitTest/GitSvnTest, 那么我就要输入: git svn clone C:/Users/Mr Zhang/Desktop/gitTest/GitSvnTest
SVN项目迁移到Git上(并带有完整的提交记录)

这时会弹出来两个对话框, 让你输入SVN的账号和密码, 当你输入正确的SVN账号和密码时, 代码就会开始迁移. 就会出现如下类似的log
SVN项目迁移到Git上(并带有完整的提交记录)
这就表示迁移成功了, 现在要想看以前的提交记录是否迁移过来的话, 我们就需要在命令行里进入的本地仓库根目录中(也就是带有.git的目录), 进入之后输入git log, 就可以看到以前的提交记录了, 如下图:
SVN项目迁移到Git上(并带有完整的提交记录)
这时可以看到, 我以前在SVN上的几次提交记录, 若你想要看其中两次提交的变化的话, 可以使用git diff 来查看, 这里就不再演示了.

你以为到这里已经结束了吗? 当然没有, 这时才仅仅是clone到Git本地仓库了, 你还需要把这个仓库和你远程的服务器上的Git仓库关联在一起才行.

4. push本地仓库到远程服务器仓库

首先要确保你的远程服务器上有这么一个仓库, 如我这里的服务器上的仓库是https://github.com/fights/GitTest.git (此仓库已被我删除). 我就需要在Bash中输入如下指令进行关联和push操作:

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

进行这两个操作的时候, 会提示你输入你的Git的账号和密码, 点击ok之后就会进行push操作.
注意: 这一步的时候可能会提示一个错误:fatal: remote origin already exists.
这时, 你可以按照 这篇博客的步骤来解决这个问题.

好了, 做完这些步骤, 你会发现你已经成功的把项目从SVN上转移到了Git上面, 并且还带有完整的提交记录.
SVN项目迁移到Git上(并带有完整的提交记录)