您的位置:首页 > 其它

Git/SVN 版本管理工具的对比

2016-10-22 16:59 549 查看
Mysql:修复表repair table name, 清空表truncate table name, 删除表drop table name
更改表名rename table name1 to name2, 备份表mysqldump 库名 表名 > 路径
字段分类group by name, 去重distinct , 字段排序order by desc/asc ---- 小 Q
------------------------------------------------------------------------------------------------------
【简介】

VSS:Visual Source Safe,源于美国微软,常用版本6.0,入门级的工具易学易用;
CVS:Concurrent Version Syst,主源码管理,开源,客户界面winCVS,优于VSS;
StarTeam:源于Borland公司,属于高端工具,收费,易用功能和安全性方面都不错;
SVN:subversion,基于C/S架构,使用范围广,性能优异,取代了CVS,发展趋势弱于Git;
GIT:不仅仅是个版本控制系统,亦是内容/工作管理系统,要改变思想去接受它的新概念新特征。

基于发展趋势,以及现有的应用现状,以下仅比较 SVN和Git 两种工具。注意:工具本身并无好坏之分





【八大区别】

1、核心区别:SVN基于集中式,Git基于分布式

如果可以充分理解分布式系统的概念,对Git的发展就会理解一大半了。Git不是第一个或唯一一个分布式版本管理系统,还有Bitkeeper、Mercurial,但它却是功能最强大的,GitHub.com 是一个成功案例;
集中式系统,只有一个中央版本库,一旦故障,影响全部,成员工作必须依靠网络,但资源集中;
分布式系统,成员都可以是中央库,工作不需要网络。这方面我觉得Git的优势更大。
比如:Git可以在offline状态下查看所有log,而SVN不可以。

(以下区别比较难以直观理解,只有再用到时,才能有深刻的体会)
2、快照区别:Git没有全局版本号,而SVN有
版本号其实就相当于对应时间的源码快照,可用于回退操作。但Git可以利用SHA-1的唯一来标示一个代码快照,却也远比不过SVN简单易懂的版本号,这是SVN的一个重大突破,要远优于Git。

3、存储区别:SVN按文件存储,Git按元数据方式存储
所有资源控制系统都是把文件的元信息隐藏在一个 .svn、.cvs、.git等目录里,而.git体积与其他差距很大,因为.git目录下拥有中心版本库的一切东西,标签、分支、记录等。
4、分支区别:SVN和Git的分支管理不同
分支在版本管理中是特别重要的存在。SVN的分支就是版本库中的另一个目录,如果想知道是否合并了一个分支,需手工运行svn propget svn:mergeinfo来确认,而且必须要先update才能commint,也经常会有遗漏分支的情况;而Git可以在同一个目录下的几个分支之间来回切换,很容易发现未被合并的,而且合并操作也很简单。
5、内容区别:Git的完整性要优于SVN
GIT的内容存储使用的SHA-1哈希算法,确保了代码内容的完整性,在遇到磁盘故障和网络问题时降低对版本库的破坏。
6、时效区别:Git的提交速度要优于SVN
克隆5个分支,SVN要同时复制5个版本文件,但Git只获取5个版本元信息,然后载入主要分支;有实验者说,克隆一个有10000个提交(commint),5个分支,每个分支约1500个文件,SVN用了将近一小时,而Git只用了1分钟。
7、系统区别:以下是关于集中式与分布式区别举例
a、分支在SVN是一个完整目录,并拥有完整的实际文件,如果成员要新建分支,将会影响“全世界”,每个人都会有同样的分支,如果分支用来做破坏(安检测试),那所有人就得重切分支重新下载。但是Git成员可以随时在自己电脑上开分支做安检测试,只要不合并提交到主版本库,就不会影响其他人;
b、如果svn中央版本库所在的机器出了问题,或网络出了问题,大家就都没办法工作了;但Git没事;
c、SVN在提交作品时,将直接记录到中央版本库,当发现bug后,已经无法阻止了;但Git的提交只是提交到了本地,除非推(push===sync)到主要版本库。
看似种种都是倾向于Git,但SVN的劣势其实不是在反向增强开发人员们的安全和不依赖工具的意识吗?

8、应用区别:SVN适于项目管理,Git适于代码版本管理
SVN支持中文,操作简单,界面统一,功能完善,美工、产品、测试、开发、设计都可以轻松上手;
Git 空间占用率低,易于代码分支管理,但图形界面支持较差,不支持中文,使用难度较大不易上手;
一个研发队伍正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态。

-----------------------------------------------------------------------------------------------------
客户端:https://tortoisesvn.net/

官方手册:http://svnbook.red-bean.com
SVN中文社区:http://www.iusesvn.com

SVN相关站点:http://subversion.tigris.org/
中文常见问题解答:http://subversion.apache.org/faq.zh.html
GIT内容完整性的讨论:http://stackoverflow.com/questions/964331/git-file-integrity

【重构和革新才是互联网永恒的话题】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息