大家好,我是IT修真院北京分院web第29期学员吴昊杰,一枚正直纯洁善良的web程序员。
【css-02】
【北京小课堂】svn和git有什么区别? webstorm怎样配置svn?
1.背景介绍
为什么要版本控制系统?
现在的软件开发工作经常会需要修改文档代码,一份文件可能会有很多的不同版本,一旦丢了某个文件或者忘了放在哪里,一个个去找太麻烦。
于是就会想到如果有一个软件,能够帮我记住每次文件的改动,而且还可以和同事协同工作,就不用自己去管理一堆文件了,也不需要传来传去导致丢失。
所以版本控制系统就这样诞生了。
它能够具体的做记录,具体的记录每一步的改变,可以与小伙伴同步完成一个项目,这是版本控制系统最重要的作用。
2.知识剖析
SVN介绍
什么是SVN?Subversion的简称,有一种说法:SVN=版本控制+备份服务器。 它可以帮你记住每次上传到这个服务器的档案内容,并自动赋予 每次变更 一个版本号。 我们用来存放(上传过来的)档案的地方叫做Repository。Repository的中文意思是仓库、贮藏室、博物馆。 我们有任何修改都可以上传到Repository里。针对每次的上传,SVN server都会赋予一个新的版本。同时,也会记录每次上传的时间。 我们以后可以从Repository中下载曾经提交的档案。我们可以取到最新的版本,也可以取得之前任何一个版本。如果忘记了版本,还可以靠记忆获取某个日期的版本。
Git介绍
Git是一种分布式的版本管理系统,Linux的创造者Linus写的。git的作用就是对文件进行版本管理,方便在不同版本进行切换修改,类似文件分不同时间备份让后需要时找回其中一份代替,不过更方便使用。
至于Git的缺点就是命令太混乱,非常不直观,命令行帮助提示晦涩难懂。断网的时候很可能不知道怎么使用Git
3.常见问题
1.SVN和Git有什么区别?
2.webstorm怎样配置svn?
4.解决方案
SVN和Git有什么区别?
1、SVN属于集中化的版本控制系统,Git是一个分布式版本控制系统。
2、Git把内容按元数据方式存储,而SVN是按文件。
3、Git的分支却是相当的简单和有趣,SVN较为复杂。
4、Git的内容完整性要优于SVN。
5、Git没有一个全局的版本号,而SVN有。
1.1、SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器 SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。 Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,rebase,Git擅长的是程序代码的版本化管理。
1.2、GIT跟SVN一样有自己的集中式版本库或服务器。但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中 心版本库/服务器上check out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍 然能够提交文件,查看历史版本记录,创建项目分支,对一些人来说,这好像没多大用处,但当你突然遇到没有 网络的环境时,这个将解决你的大麻烦。
2.1、SVN这类版本控制系统则关心文件内容的具体差异
每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,SVN 服务器上保存着唯一的一份历史版本库,所以是越详细越好了,我们想要查看一下某个文件的与昨天的版本相比的更新变动信息SVN的优势就显示出来了
2.2、Git 关心文件数据的整体是否发生变化
Git 并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。
3.1、svn分支是一个完整的目录,且这个目录拥有完整的实际文件。如果工作成员想要开启新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来对系统模块进行安全检查测试的,那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,而且这些代码很可能对稳定版本还是具有破坏性的。
3.2、Git每个工作成员可以任意在自己的本地版本库开啟无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可。无痛无痒。
4.Git 的内容完整性要优于SVN。因为Git 在commit(存储在本地)或者push(上传到远程仓库)之前,通过对文件的内容或目录的结构计算出一个 SHA-1哈希值,作为指纹字符串进行内容的校验,并将此结果作为数据的唯一标识和索引,在远处仓库接受到commit的文件之后,会再计算一遍哈希值然后跟传递过来的哈希值做比较,如果不一致,说明文件在传输时变得不完整,或者磁盘损坏导致文件数据损坏。
5.SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
优缺点比较
1.SVN优缺点
优点: 1、 优异的跨平台支持。 2、 简单易用。 3、 功能完善稳定。 4、 适合开发人数不多的项目开发。
缺点: 1、 服务器压力太大,数据库容量暴增。 2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。 3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
2.Git优缺点
优点: 1、适合分布式开发,强调个体。 2、公共服务器压力和数据量都不会太大。 3、速度快、灵活。 4、任意两个开发者之间可以很容易的解决冲突。 5、离线工作。
缺点: 1、高昂的学习成本。 2、糟糕的抽象逻辑。 3、可能把事情变遭,Git的自由度较高,Git没有保护机制。 4、拙略的跨平台支持。
2.webstorm怎样配置svn?
下载安装sliksvn
在webstorm上配置sliksvn
输入svn插件安装的位
如何checkout代码
根据服务器情况选择svn信息,添加好地址就可以导入项目的版本库了。
SVN服务器地址:
如何提交代码, 在文件上选择右键在弹出来的提示框点击commit,就可以看自己更 改过的文件。
5.拓展思考
SVN 和 Git 哪个更适用于项目管理?
Git适用于参与开源项目的开发者。他们由于水平高,更在乎的是效率而不是易用性。SVN则不同,它适合普通的公司开发团队。使用起来更加容易。
使用的场合不同。Git适用于通过Internet,有多个开发角色的单个项目开发,SVN适合企业内部由项目经理统一协调的多个并行项目的开发。
Git适用于单纯的软件项目,SVN擅长多项目管理。
6.参考文献
参考一:廖雪峰Git教程
参考四:Svn与Git的区别
参考六:什么是SVN
参考七:版本控制:集中式VS分布式
参考八:git是什么?
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
----------------------------------------------------------------------------------------------------------------------------------