Git与SVN对比

Git与SVN对比

GitSVN都是版本控制系统,版本控制是指对软件开发过程当中各类程序代码、配置文件及说明文档等文件变动的管理,是软件配置管理的核心思想之一,最主要的功能就是追踪文件的变动。html

描述

SVN是集中式管理的版本控制器,而Git是分布式管理的版本控制器,这是二者之间最核心的区别。
SVN只有一个单一的集中管理的服务器,保存全部文件的修订版本,而协同工做的人们都经过客户端连到这台服务器,取出最新的文件或者提交更新。
Git每个终端都是一个仓库,客户端并不仅提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来,每一次的提取操做,实际上都是一次对代码仓库的完整备份。
相对来讲分布式管理系统功能更强大一些,但一样的上手难度也就高一些,固然分布式代码版本管理系统并不必定适合全部团队,好比中小团队可能更关心的只是成本更低,简单易用,那么SVN等这类集中式版本管理工具仍是更为适合,可是无论团队最终选用什么代码版本管理工具,只要适合本身的团队的开发流程和工做方式,而且代码管理顺畅就能够了。git

详细对比

差别 SVN Git
系统特色 1. 集中式版本控制系统,文档管理很方便。
2. 企业内部并行集中开发
3. windows系统上开发推荐使用
4. 克隆一个拥有将近一万个提交commit,五个分支,每一个分支有大约1500个文件,用时将近一个小时
1. 分布式系统,代码管理很方便。
2. 开源项目开发。
3. MacLinux系统上开发推荐使用。
4. 克隆一个拥有将近一万个提交commit、五个分支、每一个分支有大约1500个文件,用时1分钟。
灵活性 1. 搭载SVN的服务器若是出现故障,就没法与之交互。
2. 全部的SVN操做都须要中央仓库交互,例如拉分支,看日志等。
1. 能够单机操做,Git服务器故障也能够在本地Git仓库工做。
2. 除了pushpullfetch操做,其余均可以在本地操做。
3. 根据本身开发任务任意在本地建立分支。
4. 日志都是在本地查看,效率较高。
安全性 较差,按期备份,而且是整个SVN都得备份。 较高,每一个开发者的本地就是一套完整版本库,记录着版本库的全部信息。
分支方面 1. 拉分支更像是copy一个路径。
2. 可针对任何子目录进行branch
3. 拉分支的时间较慢,由于拉分支至关于copy
4.建立完分支后,影响所有成员,每一个人都会拥有这个分支。
5.多分支并行开发较重,工做较多并且繁琐。
1. 我能够在Git的任意一个提交点commit point开启分支。
2. 拉分支时间较快,由于拉分支只是建立文件的指针和HEAD
3. 本身本地建立的分支不会影响其余人。
4. 比较适合多分支并行开发。
5. Git checkout hash切回以前的版本,无需版本回退。
6. 强大的cherry-pick
工做流程 1. 每次更改文件以前都得update操做,有的时候修改过程当中这个文件有更新,commit不会成功。
2. 有冲突,会打断提交动做,冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。
1. 开始工做前进行fetch操做,完成开发工做后push操做,有冲突解决冲突。
2. Git的提交过程不会被打断,有冲突会标记冲突文件。
3. Gitflow经典流程。
内容管理 SVN对中文支持好,操做简单。 对程序的源代码管理方便,代码库占用的空间少,易于分支化管理。
学习成本 使用起来更方便,SVN对中文支持好,操做简单。 更在意效率而不是易用性,成本较高,有不少独有的命令如rebase、远程仓库交互的命令等等。
权限管理 SVN的权限管理至关严格,能够按组、我的针对某个子目录的权限控制,每一个目录下都会有个.SVN的隐藏文件。 Git没有严格的权限管理控制,只有帐号角色划分。
管理平台 有功能很是完善的插件。 除功能插件外,还有GitlabGerritGithub等。

每日一题

https://Github.com/WindrunnerMax/EveryDay

参考

https://juejin.cn/post/6844903619813179405
https://www.cnblogs.com/ssgeek/p/9642171.html
https://www.cnblogs.com/Sungeek/p/9152223.html
相关文章
相关标签/搜索