00:04
好,我们来看今天的这个下一话题啊。啊。Gate。GIGI啊,好GI啊,And get up。好了,听老师说了啊,听老师说不唠嗑了啊。好,这是我们项目的这个啊,版本控制工具,这什么叫版本控制工具呢?大家现在想一想啊,那未来我们实际项目开发100%肯定是团队协作开发吧,这肯定的吧,很少啊,很少一个项目啊,就不在你自己身上了,压在你自己身上了,比较少,也会也会出现OK吧,就比如说你刚入职的时候,咱假设啊,你刚入职的时候,有可能你这小伙啊挺好的啊,就言谈举止都挺好的。
01:10
哎,这个哎,嘴这个说话也不臭,也挺好的啊,巧伙挺阳光的,技术稍微差点,我帮你留下来啊,以后培养培养应该是个好苗子,OK吧,好,总比那些个什么呢,每天拉个链啊,像谁欠的200块钱似的强,对不对,好小伙留下来,留下来之后呢啊,我指的就是咱们毕业的这个学员,我指的是有可能OK吧,留下之后呢,哎,正好公司里边新接个项目,这个项目正好老板还在想呢,这个项目到底结不结呢?这个项目呢,一共也就这么二三十万。很少是这样吗?这二三十万这个活吧,你要花时间做的吧,这个成本合不上,是这样吗?人力成本,时间成本,那如果不不接的话,他也是个活是吧,咱毕竟这个公司也不大对吧?哎,正好你来了怎么着?
02:00
哎,我直接把这活就给你了,OK吧,这这活啊,你搞砸了也没什么对不对,后期啊,这个啊,咱们项目组核心人员呢,你同事要帮你擦擦屁股,这个项目也OKOK吧,你要做好了,这就是对你的一次什么呢?很好的锻炼,很好的技术提升,我培养你了,哎,你可以参与到我的项目开发当中来了,OK吧,诶有可能咱们会遇到啊,OK吧,好,那么在大部分情况下,我们都指的是这个团队协作开发,但是团队协作开发它是有两种形式的,我们以后啊做咱们这个交往外边开发啊,也就是说一般情况下来讲,我们指的都是什么呢?这种团队啊,是我们。如果少点的话呢,三个人三个人人少点的话啊,正常情况下是多少呢?一个标准的项目开发小组啊,就是这个五到十个人不等,OK吧,稍微大那么一丁点的项目,20人OK吧,再大一点的40人,反正百人的我是没参与过啊,我是没参过OK吧,那至于那种比如说淘宝网啊,京东啊,就这些啊,就你能够一个手都能数得过来的这种大型的门户以及电商网站那。
03:16
这种这个这个团队可就多了,光是安全专家就得上千人,OK吧,我指的不是这种项目,OK吧,我指的是一般来讲,我们入职之后开发的一般的项目,OK吧,好,咱们可以假设这个五到十个人,或者是20个人一例OK吧,好那么如果是我们这个团队协作开发,大家注意啊,我们彼此之间是不是相当于我开发的文件。你要使用你开发的工具,我要使用,是这样吗?这个是很有可能的。对吧,但现在问题来了。彼此之间是怎样去传递信息的呢?
04:00
我现在要给你传个信息,给你传个文件,我给你传个person类,我给你传个student类,给你传个do,我怎么传?啊,那肯定得联网传,你管它是局域网还是外围网的,对不对啊,这个无所谓,肯定联网传,它手段是什么呢?要不不不联网也行,用U盘是不是也能传,是拷到U盘里传啊,我天啊,但是啊,一般情况我们能想象得到的,比如说用飞Q。啊,但那时候一想就很low的一种方式,非酋,非酋是什么?没用过吗?用了呀,飞球就是一种局域网,很low逼的QQ嘛,对不对对吧,那或者用QQ对不对,或者是FTP都可以啊,对不对,但是这些形式大家注意啊,第一是什么呢?第一是不方便,是这样吗?你想一想,不论是用飞秋传还是用U盘传,每天这个数据啊,彼此之间啊,开发人员之间数据的交互。
05:02
超级大量的。OK吧,好交互交互着你就会觉得啊,这种形式啊,每一天光是传输数据啊,就非常非常麻烦。很恶心的一件事,OK吧,再一点,大家想一想,是不是也不安全呢?我刚开发了一个student,我刚改点东西,你又把这个student改点东西,OK吧,然后哎,张三啊,你正好把你的这个student类传给我啊,然后啊,我把这个属性啊给他合成一下,你把你的student传给我,那你想一想,Student一下说把我的给覆盖掉了。我原来自己写的东西是不是没了,说有可能啊,对不对,所以说啊,不方便也不安全,OK吗?所以说啊,我们以后实际项目开发100%要使用到的是什么呢?我们的项目的版本控制工具,这个版本控制工具啊,它会提供完备的版本管理功能,用于存储追踪目录和文件的这个修改律师啊,它是软件开发者必备的这个工具啊,是属于我们软件公司最基础的一种设施,每一个公司。
06:17
对于我们的项目版本控制工具啊,它不是说选择用不用的问题,而是100%要用的问题,OK吧,是一定要用的啊,好,它主要的功能啊,我们来看一看啊,最终文件啊,最终文件好,什么时候什么人修改了什么文件,他会忠实的给他记录下来,OK吧,我们通过不断的升级项目版本的形式来逐渐的这个完善项目,OK吧,好,我们现在啊来看一看下边这张图。首先呢,我们现在啊,把这个项目呢,可以给它上传到一个服务器当中,那么我们这个版本啊,可以给它来个versionson,叫做版本1OK吗?当我往里边添加了一些信息之后,大家注意啊,添加了一些信息之后,好,我是不是应该把这个项目的版本进行升级啊,啊升级为是不是版本二了,对不对,版本二如果你继续的去完成。
07:16
版本二他继续升级,是不是升级为版本三了,对不对,但是版本三其中有一个人把这个版本三给他,给他改毁了怎么办呢?他还能够干嘛呢?回到历史,版本二能理解吧,OK吗?好,也就是说啊,我们现在你可以把这个项目啊给它想象成什么呢?我们去共同完成的一项资源。大家一起共同完成它OK吗?那这个项目它是保存在这个服务器当中的,你可以这么想,OK吗?好,我写点东西往服务器上一面一传,是不是服务器上面这个项目是不是升级了一个版本呢?你写点东西往这个服务器上一上传,是不是服务器上面这个项目的版本又升级了,诶每一个人诶都往上面上传,你想一想是不是逐渐完善的就是服务器中的一个项目。
08:07
那当我要下载新文件呢?比如说我开发的东西,你要用呢,我先是不是把我的文件上传到服务器上,把这个项目给他升级啊,你要用的话,是不是直接从那个服务器上下载下来就行。OK吧,好,就是这么一个原理啊,好,咱们版本控制工具的这个作用啊,首先啊,最重要肯定是团队协作开发啊,共同的完成一个项目啊,对于版本的管理,以提升项目版本的形式来逐步的完成项目,好数据备份啊,我们可以啊,在升级的同时将我们历史的这个版本给它做一个保存,OK吧,好,权限控制,对于团队开发人员不同权限分配啊,那能够有效的干嘛呢?有效的保证我们项目的安全性,比如说你刚入职。
09:00
你刚入职,诶你的技术水平啊,哎,我有点不确定啊,怎么办呢?我给你分配一个权限嘛,我给你分配个权限啊,对于服务器中这个项目啊,你能够当下来,能够下载下来,但是呢,你只能看它先梳理一下啊,我们团队协作开发这个项目的这个接口啊,梳理一下接口,看一看我们这个开发的这个规则,以前已经完成的这个模块,以及我们企业文化啊,什么叫企业文化呢?比如说这个包结构啊,怎么建,用什么命名啊,是这样吗?好,那么你可以看,但是啊,你能不能够去修改这个项目。不能OK吧,当我完全信任你之后,你说可以去修改了,OK吧,所以说不同啊的这个人员的这个身份啊,可以分配不同的这个权限,OK吧,好,那么最后是一个分支管理啊,这个分支管理是对于一个超级大规模这个项目来讲的啊,啊也就是说啊,这至少至少得是这个啊几十人以上的这个项目OK吧,好,他允许在开发团队过程当中啊,产生多多种什么呢?分支啊,在一个主线的同时干嘛呢?产生多个支线。
10:08
看到没产生多个支线,这多个支线就相当于什么呢?哎,多个支线也是干活,但是支线在干活的同时,主线干活吗?也在干活,能理解吧,那大家一起干活,最终完成的效率是不是会很高啊对不对?好这个至于这个分子啊,咱们一会儿通过一张图啊,老师来这个解析一下啊好。咱们这个市场上常见的这个版本控制工具啊,以及分类,呃,咱们分成两大类啊,第一大类叫做什么呢。集中式版本控制工具啊,那还有一种叫做什么呢?分布式版本控制工具,OK吧,其实我们之前用的都是集中式啊集中式。OK吧,好,呃,那么到现在啊,现在啊,我们逐渐的往这个分布式上转了,OK吧,好,我们先来看一看这个集中式,这个集中式版本控制工具啊,有如下几项啊,这个CVS啊,是最早提出的一个这个版本控制工具啊,非常非常的老啊,我在开发这个,我在开发第一个项目的时候用到一个CVS,但是CVS在第一个项目做完之后再也没用过,那以后咱们用的都是什么呢?
11:27
这个SVN,这个SVN啊,只要是集中式版本控制工具,没别的这百分百用这个SVNOK吧,好的,还有一种啊,也比较好用,也挺出名,叫VSS,但这个VSS有一个致命的弱点。VSS是微软公司呢?啊,一提到微软收费,是不是其实收费还不是最狠的啊?最重要的是什么呢?微软公司的这个产品呢,只跟自己公司的产品结合的是最紧密的,跟其他公司产品的结合的不紧密。
12:00
可能你们体会的比较比较差哈,因为接触的东西少是吧,我给你们举个例子吧,比如说啊,这个微软里边有一个那个数据库叫什么来着。So是吧啊so好呃,就比如说啊,以前这个咱们接了一个这个私活啊,这都是小时候的事了啊,小时候就跟小伙伴一起接个小私活啊,啊做的是一某一个这个叉叉叉厂的这个项目啊,也不能透漏是吧?啊,反正我们两个人一个人是一万五啊,但是在当年啊,在咱们小的时候,那一万五那钱不少啊。我们两个人一起做的开发,就相当于白天上班呗,天天晚上工作到两点多,三个多月交的活,嗯,差不多吧,那当时15000,那钱就相当不少,我这么跟你们说吧,当时就一个月啊,就在我们沈阳就一个月,你挣2000块钱就算不少了。嗯。
13:01
一万五就挺多挺多了吧,啊挺多了,当时咋呢,当时咱们咱咱们在咱们在想的一个东西什么呢?哎呀,这这这这这这后端语言,这Java这肯定是没悬念了,对不对,是咱们最熟的对吧,那数据库你就说my circle Oracle都已经用用烂了是不是,然后我这个小伙伴呢,啊,就会提出来一个什么,就提出来一个这个歪点子啊,咱东北话就提出一个幺蛾子是吧。啊,咱们用circleq server吧,行啊,那用吗?反正都是关系系数据库吧,对不对,好,咱就用那个搜server,哎,你用这个so server你能用吗?哎,真能用。能用都是关系上数据库嘛,对不对,但是你怎么用它,它就是别扭。你简直是用一步卡一步啊,然后你得调啊,你得对这个配置进行重新配置,就像唐僧取经似的,九九八十一难,哎,就这个东西啊,你用着用着就觉得蹩脚,但是能用吗?能用。哎,就这么气人,OK吧,但是呢,你想一想,什么叫微软公司的产品只跟自己的公司的产品结合的紧密,那比如说c sharp吧,就那个西井听过吗?呃,包括那个后期那个do net啊,Do指的就是那个点啊,那不认识人都叫点,Net对不对,其实都是属于我们这个微软公司的那个产品,对不对,就他们跟这个SOSO结合的是超级紧密,老亲了,无缝结合,啥也不用配。
14:28
OK吧,所以说这是微软公司,其实是属于微软公司的一个通病。OK吧,微软公司的一个通病啊,好哎,对,就是故意的,所以说这个VSS啊,其实在这个市面上再有一个啊,确实收费啊,所以说在这个市面上用的不不是很多,虽然说它好用,OK吧,但是啊在企业里边你会发现,尤其是在中国。一色的SVN啊。OK吧,一色的SVN啊,这个SVN的这个理念啊,就是啊,我们要搭建一个这个远程的这个服务器,我们可以玩的是一个局域网,看到没啊,你跟这个服务器搭建出来一个局域网,比如说我们在你看昨天我们才能上外网是吧,在上外网之前,咱们玩的时候一直都是局域网,你们能连老师就行了。
15:18
对吧,好,也就是说啊,比如说现在啊,三个开发人员,三台开发的这个主机是这样吗?这三个开发主机啊,其中有一个是笔记本,这两个是什么呢。台式机这个无所谓,OK吧,指的就是张三李四王五啊三个开发人员,那比如说啊,这个张三啊,在搭建了一个项目之后,把这个项目给它上传到服务器当中了,那服务器中这个项目的版本是多少?是不是1.0啊,那假设行吧,1.0好,那么李四和王五这两两台机器里边是不是还没有项目呢?怎么办?从服务器里边第一次叫什么,把这个项目给他下载下来,是这样吗?那我来问大家,那李四和王五这个电脑里边下载的这个项目和张三里边这个项目是一个吗?
16:07
是同一个一模一样的,是这样吗?因为服务器中这个项目就是张三上传的嘛。对吧,好,然后呢,三个人协作开发,好,也就是说他是这么样的一个过程啊,同学们好,当张三开发完了之后怎么样,同学们。是不是往这个服务器上上传呢?对不对,好,那么服务器上传完,李四要用怎么办呢?从服务器上下载,下载完之后他开发了一些东西往服务上上传,其他用下载OK吧,所以说呢,我们共同完善的就是服务器中的这个项目。OK吧,好,呃,那么分布式这个版本控制工具啊,现在还是这个意思啊,这个分布式这个概念啊,现在被炒的是超级的火,OK吧,而且这个分布式做分布式开发啊,我们已经火了有几年的这个时间了,OK吧,等到我们那个第六阶段那个项目啊,咱们要做一个这个分布式开发的,OK吧,到时候你们那个互联网金融啊,做的是要更高端一些,OK吧,好呃,这个分布式版本控制工具呢?好,大家注意看啊。
17:16
GI就是咱们要学的OK吧,其他还有一些分布式版本控制工具啊,但是呢,GI实在是太出名了。它基本上是在市场的90%以上的这个份额,OK吧,剩下的这些东西啊,你以后在企业里边几乎接触不到,能理解吧?啊GI太出名就好比啊,比如说我们现在你看比如方便面有很多吗?那但是只要提到方便面,我们就能想到什么。啊,那肯定是康师傅,你要统一也好使,我认为统一比康师傅好吃,但你要是论名气来讲啊,还是康师傅最狠,对不对啊,行,咱们来看一看这个分布式的这个概念啊,咱们来看,哎,这个跟上图比起来,这个稍微乱那么一点点,对不对?大家注意啊,哎,我们貌似没有上面这个服务器啊。
18:09
对不对。没有上面这个服务器啊,那它是什么理念呢?它指的是大家注意啊,咱们12345677台电脑,三个笔记本,四个台式机,七个开发人员,是这样吗?没有服务器。我自己的这台电脑,当前我自己的电脑就是什么呀。我当前的服务器能理解吧,所以说我自己的代码首先会提交到哪儿呢?我自己电脑的这个仓库里面OK吧。他是提出这么一个理念OK吗?那老师呢,这个张三和李四怎么整合这个代码呢?我们还会提供一个什么呢,叫做远程库的这么一个概念啊,这个给大家稍微画一下啊。
19:04
也就是说啊,大家注意看啊,现在暂时我们看起来是这样的啊,他的这个代码是不是提交到自己机器上啊。他的代码也提交到他自己机上,包括他们的都是独立的,对不对,自己的电脑就是自己本地的这个仓库,是这样吗?但是呢,在我们的这个外网上,这回咱们真得连外网万维网OK吧,当然也可以搭那个局域网啊,但是一般来讲咱们是这个啊,万维网上的一个远程库,大家能看到这是什么吗?这是一朵云彩啊,这这这是这是这这是云啊,这个云指的是什么呢?云什么意思?发现吗?I线什么叫云?指的是远端的意思是这样吗?好,这是一个远程库,能理解吧?如果有必要的话,我这个代码应该上传到哪?云端这个远程库上能理解吧,然后他如果要下载这个代码,是从这个远程下载下来能理解吧,但是如果我指的是有必要的情况下,咱们上传到这个远程库上,如果没必要的话,自己先完善自己的项目,是不是直接上传到自己的电脑上就行了,所以说在一般的开发的情况下,大家想一想我们提供的这个项目的版本,是不是有我自己计算机里边本地仓库的这个版本对不对?诶,我自己有我自己的版本一,版本二,版本三,同时呢,通过我们的这个GI能够有效的记录我之前的这个版本,对不对?好,它的好处是什么呢?大家想一想。
20:35
哎,是不是不用联网。因为我自己提交到自己电脑上嘛。是这样吗?我指的现在我指的是我自己玩的情况下,是不是不用联网啊,这个没错吧,OK吧,但是这两个人玩的时候,大家注意是不是咱们就得联网啊,OK吧,有必要的情况下,咱们联网才会处理云端的信息,OK吧,如果没有必要的情况下,我自己的电脑就相当于自己的仓库,OK吧,好,每个用户啊,都有自己在本地的仓库啊,就是我们当前开发的这个这台主机啊,用来管理啊,进行这个项目的版本控制啊,每个客户端呢,同时也是一个服务器,那么同时也可以用一个专门的这个服务器的这个仓库来管理,也就是说我们也可以像上面似的啊,这个集中式版本控制工具,这个SV一样也可以架设一个什么呢?局域网的这个服务器也可以OK吧,我们不用不使用云,不连外围网,不上外网的情况下,你架设一个局域网的服务器也可以OK吧,好,但是一般来讲啊,咱们这个。
21:42
你看啊啊,都是把代码上传到这个外网上的OK吧,上传到这个云上的OK吧,好。行,接下来啊,咱们来对于这个get啊做一个这个简介啊,Get呢是一个开源的分布式的版本控制工具啊啊至于这个分布式老师这个分布式的这个概念啊,还不是那么特别的清晰啊,这个先不着急啊,对于我们现在来讲太早了,OK吧,好,等这个后期啊,呃,下个阶段和大下阶段啊,在咱们这个分布式这个概念啊啊就会浮出水面了,OK吧,好,先不急啊,有效高速的处理从很小到很大的项目,也就是说啊,你就让人们他没有选择性,哎,我管理小项目是不是用这个工具就比较好啊。
22:31
哎,小巧方便,诶,我大项目我就必须得使用这个工具了,这个GI啊,小项目大项目用它都好使,都好用,不给别人留活路了,看到没啊,你你就选用它就行了,OK吗?好,这个GI啊,起初是。这个叫什么?雷纳斯托瓦斯这个人是很烈的啊,为了帮助管理Li尼克斯内核的开发而开发的一个开放源码的版本控制软件,也就是说这个雷纳斯托瓦斯这个人呢?
23:06
他在上大学期间,他做了一套操作系统叫Linux,这个Linux啊,哎,我说这句话说挺气人的是吧,他是在他是这个赫尔辛基大学的啊,这个在大上大学的时候比较无聊,然后他他去研究那个UNI,他觉得UNI斯收费啊,而且呢,这个这个东西啊,Unix斯有很多不好用的地方啊,我自己上大学反正也没事啊,我也不打游戏,我自己做个操作系统吧。啊,他做的这个Linux啊,但这个Linux呢,需要这个版本控制工具,OK吧,好,那么咱们这个GI啊,就是这个雷纳斯啊,为了帮助管理Linux的这个开发而开发的,OK吧,好。
我来说两句