git-svn同时管理git与svn两种仓库

如果开发环境使用git仓库,正式环境使用svn仓库。如何将管理有种仓库的代码呢? 
幸好git与svn有一个桥接工具git-svn,可以将两种仓库衔接起来,用不同分支进行管理。

下面以将git代码,并入svn仓库为例

  • 首先从svn仓库克隆代码
git svn int http://ip/svn/demo/trunk  demo
git svn fetch -r HEAD
  • 添加git仓库地址
cd demo
git remote add git  http://ip/path/demo.git
  • 获取git仓库的分支
git fetch git master    #获取git仓库的master分支
git fetch git 1.0       #获取git仓库的1.0分支
git fetch git           #获取所有git分支
  • 此时本地git的分支情况
➜  demo git:(master) git branch -a
* master              #默认对应svn
  remotes/git-svn     #svn分支
  remotes/git/1.0     #远程git的1.0分支
  remotes/git/master  #远程git的master分支
  • 将git代码合并到svn分支
git merge  git-master
  • 更新并提交
git svn rebase
git svn dcommit

Git和SVN共存的方法

https://blog.csdn.net/wyongqing/article/details/79053803

刚工作的时候都是用的cvs和svn,对git不熟悉,随着工作的需要,打分支和版本管理的需要,熟悉起来了git,这一用不可收拾,比svn远远好用,尤其是版本分支管理上,切换分支的方便性,现在这家公司还是用的svn,也不准备为了我一个人搭建git服务器,苹果电脑下的svn界面工具,虽然有几款能用,但是用的过程中有许多问题,界面工具下面都是svn命令行执行,但是销量不是很高,也不很直观,有时会用,废话不多说了,我的目标就是公司的svn继续使用,代码也可以提交到svn上,自己可以提交到git服务器上,相当于两套代码库保持一样的代码,这样的好处就是第一安全,第二就是,公司如果没有vpn代理,回到家里,代码无法操作,现在可以回家用git更新代码,提交代码,到了公司用公司电脑更新代码,然后可以提交到公司的svn服务器上。

        为了git和svn共存,查了好多资料,经验证git-svn也可以满足我们的需求,就是用git-svn操作代码库,git svn clone代码到本地,就可以用git的东西本地操作了,然后git svn rebase更新代码,git svndcommit提交代码,这个好处就是可以用git本地分支管理了,不好的是还是只能操作一个远程代码仓库,还是比较麻烦的。我试了许多次是用 git工具和svn工具一起用,git工具用命令行获sourcetree都可以,svn工具用命令行或界面工具,只是提交代码更新代码用。如果你是第一次创建工程的话,先用svn checkout 代码到本地,然后在代码根目录git init,然后git remote add origin/master  git地址。这样以后就可以git和svn同时使用了,注意增加忽略文件,git忽略svn文件,svn忽略git文件。如果svn上有工程或者git上有工程,我的情况是svn和git上都有代码,并且代码一样,首先svn checkout 到本地,打开根目录删掉所有文件,以免git pull代码的时候冲突,然后git init,接着git pull代码后,用svn update 代码一下,这样就ok了


如果开发环境使用git仓库,正式环境使用svn仓库。如何将管理有种仓库的代码呢? 
幸好git与svn有一个桥接工具git-svn,可以将两种仓库衔接起来,用不同分支进行管理。

下面以将git代码,并入svn仓库为例

  • 首先从svn仓库克隆代码
git svn int http://ip/svn/demo/trunk  demo
git svn fetch -r HEAD
  • 添加git仓库地址
cd demo
git remote add git  http://ip/path/demo.git
  • 获取git仓库的分支
git fetch git master    #获取git仓库的master分支
git fetch git 1.0       #获取git仓库的1.0分支
git fetch git           #获取所有git分支
  • 此时本地git的分支情况
➜  demo git:(master) git branch -a
* master              #默认对应svn
  remotes/git-svn     #svn分支
  remotes/git/1.0     #远程git的1.0分支
  remotes/git/master  #远程git的master分支
  • 将git代码合并到svn分支
git merge  git-master
  • 更新并提交
git svn rebase
git svn dcommit

猜你喜欢

转载自blog.csdn.net/thanklife/article/details/80162403