SVN与GIT的区别
- 概念
SVN:集中化的版本控制系统
GIT:分布式版本控制系统
集中化的系统,受限于服务器,比如:提交记录,如果我离线的话,提交记录是看不到的;代码更改,我想查看每次提交的更改也很困难;
文件记录方式
SVN:记录每个文件的变化,每个版本存储前后变化的差异数据
GIT:记录整体数据的变化,每次提交,把所有文件生成一个快照,和前面一次提交对比,若文件没变化,直接指向上一次文件,只记录变化的文件分支的创建和合并
SVN:每次分支都是对之前代码重新拷贝到一个新目录
GIT:分支的创建和合并代价很小,十分方便
很明显的一个地方是文件的大小,SVN有几个分支,大小就增加几倍,而git使用指针记录每次提交的,分支的创建和合并其实就是对指针的操作,效率可见一斑
对GIT的一些误区
- git≠github
git是分布式的版本控制系统
github是一个托管git库的网站,使用git作为代码版本管理工具,github是全球最大的代码开源网站,上面的大部分git库都是公开(public)的,就是所有人都可以访问,也有私有库(private),只有拥有权限的人才可以访问
gitlab是一个用于仓库管理系统的开源项目,可以理解成和github是一样的,提供web界面管理git仓库,但是可以搭建在私有服务器上,保证代码安全
- git不慢
感觉大部分人都觉的git很慢,这是一个很大的误区,可能是大部分人刚开始都是通过github接触git的,github的服务器在国外,而且我大天朝的网络环境,大家都懂的,其实从上面对git和svn实现原理的比较,显然git比svn快,如果我们都用内网的git服务,就不会感觉git慢了
- 觉得git麻烦
可能是大部分人一接触git,需要一大堆配置就觉得麻烦,所以要给大家讲明白为什么需要这些配置,git使用的ssh协议(http也支持),ssh通过公私玥来加密数据,所以一开始会让大家生成一个公钥并上传到网站上,为了标明每次commit是谁提交的,会配置开发者的一些基本信息
- git和svn一样简单易上手
为什么这么说呢,因为从本质上来说,都是版本管理系统,我们从常用的几个操作来说:
操作 | svn | git |
---|---|---|
从服务器拉工程 | check out | clone |
提交 | commit | commit->push |
更新 | update | pull |
可以发现步骤基本是一样的
为什么使用GIT?
- 为了装逼?
- 因为别人用,所以我们也用?
肯定不是这些原因,使用git是为了:
- 提高开发效率!
git不仅仅是一个代码版本管理工具,也是一个文档管理工具,在git上很容易维护一个文档
git可以提高开发效率,主要表现在:
- 合并对提交过程的保留
- 修正提交
- 廉价好用的本地分支
- 更强大智能的合并能力
- 完整配套的开发过程设施(wiki issue 功能大赞!)
- 查看日志