Git与SVN混用作为版本控制
使用场景
公司的项目使用的是SVN服务器作为版本控制而且由于权限管理原因和部分员工不愿意使用Git所以没有做迁移。所以SVN将一直作为公司的主要版本控制工具来使用。本人由于一直使用Git基本没有接触过SVN,对SVN不够了解。对于Git操作比较熟悉,也可以方便在本地建立临时分支来使用。所以决定以SVN作为本地代码和单位代码仓库的管理工具,以Git作为本地开发的版本管理工具来使用。
使用方式
网上有很多git和svn混用的方式,我这里也是参考了一些网上的文章博客等。简要介绍一下目前我所使用的方式和一些常用操作。
-
clone项目
git svn clone <svn_repo_url> [project_dir]
通过这种方式可以把svn的项目下载到本地,project_dir作为可选参数,可以指定项目下载的目录名称。
-
本地开发
本地开发的话,由于不能在SVN上自由创建分支,所以本地开发我通常使用Git来管理自己的开发分支。
SVN项目clone下来后使用的master分支,我以master分支作为SVN的远程最新代码,自己的开发分支统一新建 develop分支上来开发,或者有临时的bugfix分支,或者非版本需求的feature分支。这样可以同时进行多项工作,多项任务互不干扰。
-
拉取SVN最新代码
// 如果当前在非master分支,stash保存当前代码或者直接提交代码。 git stash // 切换到master分支拉取SVN最新代码 git checkout master git svn rebase // 之后将master分支的代码合并到的开发分支就可以了。
-
提交代码到SVN
由于开发的时候使用的都是其他分支,master分支作为跟SVN交互的一个主干分支,所以你的代码最终都要merge到master分支上面。
git add . git commit -m 'comment' git checkout master //切换到master分支后直接拉取最新代码 git svn rebase // 拉取后合并分支 git merge <your_branch> // 解决冲突后提交到SVN服务器 git svn dcommit
由于SVN是每一次提交都会升一次版本号的。这里提交会把你所有的git提交都记录成对应的svn版本号提交到服务器仓库上。
以上就是我将Git和SVN结合使用的一种方式了。希望对你有帮助。