Git(分布式版本控制系统) | Svn(集中式版本控制系统) | |
定义 | Git是目前世界上最早进的分布式版本控制系统。 | SVN是Subversion的简称,是一个开放源代码的版本控制系统,说得简单一点SVN就是用于多我的共同开发同一个项目,共用资源的目的。 |
工做流程 | ![]()
1.写代码安全 2.提交到本地版本库服务器 3.从服务器拉回服务器的当前版本库,并解决服务器版本库与本地代码的冲突网络 4.将远程库与本地代码合并结果提交到本地版本库分布式 5.将本地版本库推到服务器svn |
1.写代码性能 2.从服务器拉回服务器的当前版本库,并解决服务器版本库与本地代码的冲突开放源代码 3.将本地代码提交到服务器版本控制 |
是否有中央服务器 | 没有中央服务器,开发人员本地都有 Local Repositoryblog |
有。开发人员须要从中央服务器得到最新版本的项目而后在本地开发,开发完推送给中央服务器。所以脱离服务器开发者是几乎没法工做的资源 |
网络依赖 |
分布式在没有网络的状况下也能够执行commit、查看版本提交记录、以及分支操做,在有网络的状况下执行 push 到 Remote Repository。 |
必需要联网才能工做,并且对网络的依赖性较强,若是推送的文件比较大并且网络情况欠佳,则提交文件的速度会受到很大的限制。 |
文件存储格式 | 按照元数据方式存储,体积很小 |
按照原始文件存储,体积较大 |
分支操做影响 | 分支操做不会影响其余开发人员 |
建立新的分支则全部的人都会拥有和你同样的分支 |
提交过程 | 提交是本地操做,须要执行push操做才会到主要版本库 |
提交的文件会直接记录到中央版本库 |
优点 | 1.分布式管理:Git是没有中心服务器的,每一个人机器上都是一个完整的库 2.离线工做:(1)断网提交至本地库(2)本地回滚 3.分支策略:在Git实际开发中分支的分离和合并是属于平常操做,开启和合并分支成本相比SVN要小得多:SVN是复制一份代码到分支目录,Git则是在分支点作一下标。
|
1.集中式管理,管理方式在服务端配置好,客户端只须要同步提交便可,使用方便,操做简单,很容易就能够上手 2.在服务端统一控制好访问权限,利用代码的安全管理。 3.全部的代码以服务端为准,代码一致性高。 |
缺点 | 1.模式上比SVN更加复杂 2.代码保密性差,一旦开发者把整个库克隆下来就能够彻底公开全部代码和版本信息 |
1.全部操做都须要经过服务端进行同步,这会致使服务器性能要求比较高。若是服务器宕机了就没法提交代码了。 2.分支管理不灵活,svn分支是一个完整的目录,且这个目录拥有完整的实际文件,这些操做都是在服务端进行同步的,不是本地化操做,若是要删除分支,也是须要将远程的分支进行删除,这会致使你们都得同步 3.须要连网,若是没法链接到服务器就没法提交代码 |