赞
踩
最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年。
因此导致虽然项目迁移过来了,但是团队开发还是在SVN提交代码。所以得想个办法同步迁移之后继续在SVN提交的代码到Git来,不然到时候又得做一次迁移操作得多操蛋。
在网上查看了下资料,都是讲SVN迁移到Git的过程,并没有讲解迁移之后团队成员继续在SVN提交代码,然后需要同步最新的SVN提交记录到Git的过程,因此自己慢慢探索,居然成功了,现在写这篇博客自己记录记录。
git svn 常用操作如下(图片来源于网络):
# 下载一个 SVN 项目和它的整个代码历史,并初始化为 Git 代码库
$ git svn clone -s [repository]
# 查看当前版本库情况
$ git svn info
# 取回远程仓库所有分支的变化
$ git svn fetch
# 取回远程仓库当前分支的变化,并与本地分支变基合并
$ git svn rebase
# 上传当前分支的本地仓库到远程仓库
$ git svn dcommit
# 拉取新分支,并提交到远程仓库
$ svn copy [remote_branch] [new_remote_branch] -m [message]
# 创建远程分支对应的本地分支
$ git checkout -b [local_branch] [remote_branch]
[root@xtgl207940 trunk]# git show-ref
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/heads/develop
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/heads/master
0ba94e3383d6f478844b1e674465fbc6ae0277e3 refs/remotes/git-svn
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/remotes/origin/develop
62333dcb3beeb73e28538f815abfdfe791b88c00 refs/remotes/origin/local-git-svn
9caa27cc211162aeed6e944144f4c676d2f1dfe1 refs/remotes/origin/master
通过上面的操作,我们可以看到有个远程分支remotes/git-svn,
从图中可以看到该远程分支remotes/git-svn对应的就是git clone 迁移时候的svn仓库。因此可以在本地建立一个分支 local-git-svn,然后同步svn的提交记录
[root@xtgl207940 trunk]# git checkout -b local-git-svn remotes/git-svn
切换到一个新分支 'local-git-svn'
使用 git svn fetch
命令同步SVN最新的提交记录,然后可以通过 git log
命令查看git的提交记录对应的svn记录相同。
[root@xtgl207940 trunk]# git svn fetch
[root@xtgl207940 trunk]# git log
通过git log 命令查看提交记录,发现已经同步了最新的SVN仓库提交记录。
git push -u origin master
查看gitlab上,可以发现已经同步迁移之后继续在SVN提交的代码到GitLab
当同步完成之后,还是会有人继续在svn提交,因此我们要继续同步迁移之后继续在SVN提交的代码到Git
查看gitlab上 刚刚同步的最新svn提交记录,如下所示:
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/76220621
如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。