同步svn代码至git库

背景

在将svn库迁移至git库后,因为不是所有人都熟悉git,因而还有一些代码还是在svn上提交,这就需要将这部分代码同步至git库。

同步操作

1、查看分支情况

[root@CentOS-6-5 /home/svn/testproject]# git branch -a
* master
  remotes/git-svn

可见,remotes/git-svn就是git svn clone迁移时的svn仓库。

2、将git-svn仓库checkout到本地

[root@CentOS-6-5 /home/svn/testproject]# git checkout -b local-git-svn remotes/git-svn
Switched to a new branch 'local-git-svn'
[root@CentOS-6-5 /home/svn/testproject]# git branch -a
* local-git-svn
  master
  remotes/git-svn

3、在分支上拉取最新代码

[root@CentOS-6-5 /home/svn/testproject]# git svn fetch

4、查看日志,确定拉取完整

通过git log命令,查看分支此时提交记录,确认所有修改均已拉取。

5、切换回主分支,并merge代码

[root@CentOS-6-5 /home/svn/testproject]# git checkout master
Switched to branch 'master'
[root@CentOS-6-5 /home/svn/testproject]# git branch -a
  local-git-svn
* master
  remotes/git-svn
[root@CentOS-6-5 /home/svn/testproject]# git merge local-git-svn

6、提交到git仓库

在merge成功后,就可以push到git仓库了,

[root@CentOS-6-5 /home/svn/testproject]# git remote add origin [email protected]:testgroup/testproject.git
[root@CentOS-6-5 /home/svn/testproject]# git push -u origin master
Branch master set up to track remote branch master from origin.
Everything up-to-date

如果之前已经添加过远端服务器,就无需再执行git remote add操作,直接push即可。

7、查看gitlab日志

查看gitlab日志,检查所有提交是否均已同步。

8、下次同步

此次同步结束后,后续需要同步时,可以将本地的local-git-svn分支删除,重复上述步骤即可,也可以新建一个分支名。

注意事项

其实在git svn clone时,如果中途失败,也可使用git svn fetch的方式接着克隆,然后将remotes/git-svn分支checkout到本地,这样就无需删除检出了一半的工程,尤其对于大型工程来说,重新检出非常耗时。

你可能感兴趣的:(版本控制,svn同步修改至git,git,svn,fetch)