个人使用SVN分支开发遇到的棘手点:

  • 依赖包也需要开分支,并修改分支依赖包路径
  • 使用switch可在trunk目录下切换到自己的开发分支,Android Studio 使用Update Directory时会默认从上次更新url路径更新,需要修改成指定分支路径
  • 合并分支后不会有之前分支提交的节点,需要自己再次提交

那么可不可以git与SVN共用呢,使用git管理本地仓库,最后完成时提交修改到SVN仓库。

好在git提供了git svn功能,本文介绍的是window系统下git svn使用,未涉及到TortoiseSVN,Mac系统下也适用。

需要环境:

1、克隆SVN仓库到本地如D盘work文件夹下,

D:\work> git svn clone https://192.168.1.1/svn/ANDROID/project/trunk/Application -r 6154:HEAD –username=mz

  • clone后面的路径换成你的SVN仓库路径
  • -r 6154:HEAD 指定从哪个提交节点克隆,如设置6154则把从6154的提交节点到最新的节点记录克隆下来,如果不设置则克隆所有提交节点
  • –username=mz 你的SVN仓库访问用户名

    如不需要再连接SVN仓库,可以追加如下命令:

  • –no-metadata 此命令忽略仓库信息,不会再跟踪克隆的远程仓库,需要提交、更新SVN仓库不能设置

2、提交代码到本地git仓库,每次修改都只会提交到本地仓库,如果要更新到SVN仓库,提交前勾选立即推送变更到Subversion。命令:git commit -am “信息”

3、推送修改到SVN仓库,如果只做了提交到本地仓库,则可选择推送将代码推送到SVN仓库,远程分支不可修改,默认就是git-svn,后面会看到,命令:git svn dcommit

4、获取SVN仓库最新的代码,可以使用”获取”获得远程SVN仓库最新代码,分支不可选,默认就是git-svn分支,获取后不会与本地分支合并,会显示两条分叉分支。

5、将git-svn分支代码与本地修改的分支代码合并,右键远程分支最新提交节点,点击衍合会将远程分支修改节点加在本地分支修改底部,命令:git svn rebase,使用命令不需要第4步,会直接获取代码并衍合。

衍合后本地修改的分支(红色线部分)会自动追加到git-svn分支节点上,即本地分支修改部分会重新基于远程仓库的最新代码节点之上。示例如下图:








大家可能会注意到gitlab/master,这是个什么东西呢?这就是后面会提到的另一个功能。

设置另外一个Git远程仓库,与原来的SVN仓库互不干扰。仅需一步就可以设置git远程仓库,可以像正常的git工作流一样使用git。

1、如果想把代码推送到托管平台,又不影响SVN仓库提交,可以做如下设置:

注意:设置git仓库后拉取最新代码、推送本地最新代码到远程仓库都会有分支选择,选择你想同步的仓库就可以了。

2、选择从指定的远程仓库拉取代码:

3、代码提交(SVN)/推送(Git)到远程仓库:点击推送,可以选择推送代码到指定远程仓库,这里可以选公司开发的仓库Subversion,也可以选自己指定的托管平台如gitlab:

文章目录
  1. 1. 1、克隆SVN仓库到本地如D盘work文件夹下,
  2. 2. 2、提交代码到本地git仓库,每次修改都只会提交到本地仓库,如果要更新到SVN仓库,提交前勾选立即推送变更到Subversion。命令:git commit -am “信息”
  3. 3. 3、推送修改到SVN仓库,如果只做了提交到本地仓库,则可选择推送将代码推送到SVN仓库,远程分支不可修改,默认就是git-svn,后面会看到,命令:git svn dcommit
  4. 4. 4、获取SVN仓库最新的代码,可以使用”获取”获得远程SVN仓库最新代码,分支不可选,默认就是git-svn分支,获取后不会与本地分支合并,会显示两条分叉分支。
  5. 5. 5、将git-svn分支代码与本地修改的分支代码合并,右键远程分支最新提交节点,点击衍合会将远程分支修改节点加在本地分支修改底部,命令:git svn rebase,使用命令不需要第4步,会直接获取代码并衍合。
    1. 1. 1、如果想把代码推送到托管平台,又不影响SVN仓库提交,可以做如下设置:
    2. 2. 2、选择从指定的远程仓库拉取代码:
    3. 3. 3、代码提交(SVN)/推送(Git)到远程仓库:点击推送,可以选择推送代码到指定远程仓库,这里可以选公司开发的仓库Subversion,也可以选自己指定的托管平台如gitlab: