git和svn的详细对比

原文地址

\ svn git
系统 1.集中式版本控制系统(更适用于项目文档管理)2.svn适合企业内部由项目经理统一协调的多个并行项目开发 1.分布式系统(仅适用于代码管理)2.适用于通过Internet开源项目开发
灵活性 1.如果svn的服务器出现故障,开发就无法工作2.必须通过与服务器中央仓库交互,拉分支3.每一次查看日志需要先从服务器上下载下来 1.可以单机操作,服务器故障也可以在本地工作2.除了上传push操作和pull拉操作,其他都可以在本地操作3.根据自己开发任务任意在本地创建分支4.日志都是在本地查看效率较高
安全性 安全性行较差,只能定期备份并且是整个svn都得备份 安全性较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息(gitlab集成了备份功能)
分支方面 1.在svn中分支更像是版本库的另一个目录2.可针对任何子目录进行branch3.拉分支的时间较慢,因为拉分支相当于copy4.创建完分支后,影响全部成员,每个人都会拥有这个分支 1.只能针对整个仓库进行branch,一旦删除无法恢复2.拉分支时间较快,因为拉分支只是获取文件的版本元素3.自己创建的分支不会影响其他人
版本控制 1.svn直观性文件内容的具体差异,会保存前后变化的差异数据2.版本号进行控制,每次操作都会产生一个高版本号(svn的全局版本号) 1.git只关心文件数据的整体发生变化,更像是把文件做快照,文件没有变化时,git不会再次保存,只是对上次保存的快照做链接2. 40 位长的哈希值作为版本号,没有先后之分
工作流程 1.每次更改文件之前都得update操作,有的时候修改过程中这个文件有更新,commit不成功2.有冲突,会打断提交动作(冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。) 1.每天开始工作前pull整个工程,然后开始工作,下班或者测试前提交,也会有冲突2.git的提交过程不会被打断,有冲突会标记冲突文件
内容管理 svn对中文支持好,操作简单,适用于大众 对程序的源代码管理方便,代码库占用的空间少,易于分支化管理
学习成本 1.适用于普通的开发团队,使用起来更方便,成本较低 1.适用于开发者,水平高,更在乎效率而不是易用性,成本较高
权限管理 svn的权限管理相当严格,可以按组、个人针对某个子目录的权限控制 git没有严格的权限管理控制,只有账号角色划分
协作 不能与git协作,不兼容git git-svn可以跟svn库进行交互,然后尽可能的在本地操作,可以兼容svn

你可能感兴趣的:(工具)