熟悉Linux下程序设计及各种应用程序 熟悉C Language 熟悉Glusterfs、FFmpeg、CDN 系统设计,计算机图形系统设计、分布式程序设计 目前主要研究方向:流媒体
分类: 项目管理
2011-07-01 09:45:14
鉴于最近某些公司,某些人用着git做着svn的模式,觉得有意思,就随便找了篇帖子拿出来
SVN和Git的主要区别:
Git是分布式SCM,而SVN是基于服务器的,也就是说每个开发者本地都有一套git库,每个人维护自己的版本(或者合并其他人的版本),而SVN是每个人写完代码后都及时的checkin到服务器上,进行合并。
如果上面这段话还不能让你真正了解Git的好处,而不想使用git来替代你的svn的话,那么我再列举几个我认为不错的比较直观的场景:
1、可以在本地(离线)就做好版本控制,而不用时刻连网,特别是Soho一族或者喜欢经常到处跑,又喜欢在路上、车上或者马路旁边的小凳子上coding的人;这个时候你可以在自己的Git库上进行版本控制,而不用到处找网络把代码搞到svn上去。
2、分布式的SCM更加安全和健壮,有没有想过,如果你的SVN版本服务器挂掉了(硬盘坏了或者网络不可用等等),你会咋样,能修复的好么,一旦修复不好,资料都完蛋了,而Git的分布式SCM,其中的几个节点挂掉影响并不大。
3、速度,你如果使用GoogleCode或者其他的SVN服务的话,不知道你是否有呆呆的等待chenkin完成的情况(我是经常有的),而Git,毫无疑问,速度快的多,(就算是使用GitHub也快),究其原因,应该是Git是打包好了上传,而不像SVN单个文件上传。
4、版本、分支管理
还有啥?想不来了,差不多就这样了,视个人情况而定,但是我认为Git会让你更加满意。
但是有人可能会有这样的想法,我本地使用git,然后定时的checkin到SVN上,这样岂不是更好,啊哈,好吧,你还不习惯或者还有其他的特殊情况(比如其他开发者不喜欢git,或者原来的代码在svn上等等),这里看看如何把git和svn结合起来一起使用。
1、比较笨的方法
同时使用Git和SVN,然后再各自的“忽略”列表里面加加上对方的版本库,比如在svn的忽略列表中加上.git,而同时在git的.gitignore中加上.svn;然后执行各自的命令。
2、比较靠谱的方法
使用git-svn应该算更加科学和靠谱的方法,安装好git-svn(这个是需要单独安装的)后,就可以使用啦,基本上是这样的:
mkdir 1stlog cd 1stlog && git-svn init