1.Git和SVN之间的区别
• Git是分布式的,SVN是集中式;
• SVN的工作区和版本库是截然分开的,而Git的工作区和版本库是如影随形的;
• 版本号:Git没有一个全局的版本号,而SVN有;
• 版本库:SVN只能有一个指定中央版本库,Git可以有无限个版本库,或者每一个Git都是一个版本库;
• Git是压缩后传输,svn是一个一个文件传输,所以git的网络流量比svn少很多;
• 检出:
SVN可以将整个库检出到工作区,也可以将某个目录检出到工作区。但是Git只能全部检出,不支持按照目录进行的部分检出。
• 更新:
在SVN中,因为只有一个中心仓库,所以所谓的远程更新,也就是svn update,通过此命令来使工作区和版本库保持同步。
Git使用git fetch和git pull来完成远程更新任务。
• 提交:
在SVN,当你提交你的代码时,它将直接记录到中央版本库。当你发现你的代码存在严重问题时,你已经无法阻止事情的发生。
而Git的提交完全属于本地版本库的活动,而你只需”推”(git push)到主要版本库即可。
2.SVN优缺点
2.1 SVN优点
• 管理方便、逻辑明确,符号一般人思维习惯;
• 易于管理,集中式服务器更能保证安全性;
• 代码一致性非常高;
• 适合开发人数不多的项目开发。
2.2 SVN缺点
• 服务器压力太大,数据库容量暴增;
• 如果不能连接到服务器上,基本上不可以工作,就不能提交、还原、对比等等;
• 不适合开源开发,但是一般集中式管理的有非常明确的权限管理机制,可以实现分层管理,从而很好的解决开发人数众多的问题。
3.Git优缺点
3.1 Git优点
• 适合分布式开发,强调个体;
• 公共服务器压力和数据量都不会太大;
• 速度快、灵活;
• 任意两个开发者之间可以很容易的解决冲突;
• 离线工作。
3.2 Git缺点
• 学习周期相对而言比较长;
• 不符合常规思维;
• 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。