00:00
好了,同学们,那咱们接下来看一下这个gate的工作机制啊,这个gate其实它内部的工作机制非常简单,虽然这个功能很强大,但是它这个工作机制确实非常简单啊,那我们来看一下,基本上就是咱们下边这张图,在这个gate里边啊,它大概分为三个区域,哪三个区域呢?就是这个工作区啊,暂存区以及这个本地库,那咱们先聊一聊这个工作区是什么呀,其实非常简单,这个工作区就是咱们写代码的地方。那有同学说,那老师是不是idea啊,我我一般都写代码就在idea里边写的,大家注意啊,咱们这个工作区指的可不是咱们这个开发工具idea,这个idea它指是一个开发工具啊,那我这个工作区指的是什么呀?指的是你代码存放的磁盘的目录的位置。大家都知道咱们这个idea,你创建一个项目,它是不是必然会在你的本地磁盘生成一个目录啊,你那个目录咱们就称之为工作区,那个就是你存放代码的地方啊,这个地方咱们称之为工作区,就是咱们存放代码的位置。
01:11
那再往上什么叫暂存区啊?你在你的工作区写了代码之后,你得让GI追踪到,就让GI知道你有这么一个代码文件,那因此你需要把你工作区的代码给它添加到暂存区。大家注意我的用语是添加,所以说对应咱们这个get里边的命令,也就是ADD,就是从工作代码,你要添加到暂存区,那大家也都也都能这个顾名思义啊,既然是暂存区,说明咱们暂存区里边的代码是临时存储。那既然是临时存储,说明咱们这个暂存区的代码也是可以删掉的。那当然这个工作区也可以删掉啊,就比如说你在你本地写了一行代码啊,就比如说啊,你本来你这个写了三行代码,然后你又在这个三行的下边加了一行,就第四行这个代码,那你这个第四行先加了,你感觉写的不是很好,然后你用那个敲那个退额键把这一行的删掉了,那如果你是在那个工作去做这个事情,那删掉就删掉了,你这个代码是没有历史记录的,也没有历史版本的。
02:19
那你那你如果这个把这个工作区这个代码不仅写在了工作区里边,还给它添加到了GI的暂存区,注意咱们这个暂存区它是一个临时存储,我也是可以删掉的,因为这个时候还没有生成对应的历史版本,那什么时候才会有这个历史版本呢?你需要把暂存区里的代码给他干嘛呀,给他添,给他提交本地库,大家注意我都用于是提交本地库啊,添加暂存区提交本地库,因此咱们提交本地库用的命令是commit。那你一旦把你这个代码提交到了。
03:03
本地库,那就会生成对应的历史版本,一旦生成历史版本之后,大家注意,你这个代码就删不掉了。啊,一般到这儿是吧,很多大家理解不了,那我就给你举一个很现实的例子啊,就比如说你在公司里边做开发啊,有一天啊,你这个最近你压力比较大,然后呢,你一不小心是吧,跟几个朋友出去喝了点儿,你喝多了,心情不是很好,你想发泄一下,在你这个代码里边,哎,这个加了一句骂这个老板的话,或者是注释是吧,就是my boss is stopped,我这个老板是愚蠢的。如果你只是在你的工作区里边写了这个代码。那这个时候是吧,不要慌,你第二天酒醒了以后,你可以把这个代码给它删掉是吧,神不知鬼不觉,老板也不知道你骂他了。那你是吧,为了这个追求刺激,你不仅在工作群里边还把这个代码写了,你还把这个工作群的代码干嘛呀,给它添加到了暂存区。
04:02
然后你第二天酒醒了啊,也不要慌,因为咱们既然是暂存区,就说明你可以执行GI的一个命令,把咱们这个暂存区的文件给它删掉,然后呢,我再把工作区这个代码给它删掉,那也就没有了,老板也是看不到的。如果你非要作死是吧?你不仅添加到了暂存区,你还干嘛呀?你还给它提交到了本地库,注意同学们,一旦你这个代码进入到了本地库,那就会生成一个对应的历史版本。那这个时候你这个你这一句骂老板的话,这个骂老板的代码是不可能再删掉了啊,那就比如说啊,给我再举个例子好吧,我这个代码首先有一个V1版本没问题,有一个V2版本没问题,那然后你是在这个V2版本的基础之上骂老板给他提交了V3版本,如果你想让这个代码消失,只能怎么,只能是基于V3这个版本把这句代码删掉,然后再给他提交一个V4版本,那从这个明面上看,老板是看不到你骂他的,那万一你的老板他也懂这个get,他一查询发现你这个代码里边有一个V3版本,他把这个版本切换到V3版本,那自然而然,自然而然的你就看到了你那句骂人的代码。
05:26
所以说咱们称啊,咱们这个GI里边的历史版本,你是单独删除不了的。那同学说,那我知道这个V3不是有问题吗?那我单独把V3这个版本给它删掉不可以吗?注意不可以,因为咱们get的版本是基于上一个版本的啊,咱们这个V4这个版本它是基于V3的,因此你不能单独删掉V3版本这个代码啊,那当当当当,当然了,如果你是吧,你这个比较厉害,你直接删除掉了你整个本地库,就是你那个,就是你那个项目的那个目录,它也是可以可以删掉的,就商库跑路呗,是吧,你为了让老板看不到你骂他,你把整个代码都给他删掉了,那这个是吧,后果需要你这个承担一下而已啊。
06:09
那所以说这个大家啊,不要把这个代码,尤其是一些你这个写的不好代码,在提交本地库之前啊,你要这个慎重的检查一下,那这个简单就是咱们那个。GI的工作机制,那既然就讲到这儿了,那咱们接着往下看,看什么呀,看它的那个代码托管中心啊。那这个代码托管中心它又是个什么呀?这个代码托管中心啊,是基于这个网络服务器的远程代码仓库,那一般我们称之为是我们称之为啊,称之为远程库,也就是咱们这个远程库,就是那个所谓的代码拓换中心,大家可以简单把这个两个画个等号啊,那在咱们上面这个图里边,它其实是少画了一个图什么呀,就是咱们那个远程库。
07:01
诶,那我简单给大家写一写啊,就是这个远程库。也就是什么意思啊,你你把这个代码提交到本地库里边,形成了这个历史版本之后,你还可以做一个操作,就是什么呀,就是这个推送远程库,就是从本地库把这个代码推送到远程库里边儿,呃,这个就用到咱们在公司里边经常用的一个命令,就是这个push push push推送的意思啊,如果咱们还是基这个基于刚才那个例子讲啊,如果你把骂老板的那个版本,不仅提到了本地库,你还干嘛呀,你还给他推送到了远程库。就给他推到了这个giup上面,那假设啊,咱们这个远程库的getup上面,而恰好你们公司那个giub那个远程库是完全这个开源的,那这样一来,不仅你们公司的人能看到你骂人了,那这个全世界的人民,只要他能够看到你这个远程库,他都可以发现你在某个版本里边骂了谁谁谁啊,所以说这些过程啊,还是比较这个危险的,大家这个慎重一些啊,那我们这个重点再给大家介绍一下其他的这个代码托管中心啊。
08:17
咱们这个GI的代码托管中心基本上分这两类,第一类就是咱们讲的这个互联网版本的代码托管中心,有这个什么呀?有这个githup,这个也是用的比较多的,因为是人家官方的,是GI官方带了一个代码托中心叫做githup,那只不过这个githup是基于外网的,它的服务器在国外啊,你如果你们这个公司网络不是很好,你很有可能连接这个giup效率会很慢,那因此咱们有什么呀,咱们国内也有一个国内版的这个githup,咱咱们叫什么呀?咱们叫做这个马云啊,它的这个英文名字,它的这个英文名叫做这个get EE啊,它的这个英文名叫做这个gete,就是这个马云啊,马云,那除此之外,除了互联网之外呢,你们公司还可以搭建自己公司的这个get lab服务器,这个get lab是基于局域网的代码拓展中心。
09:16
啊,就比如说你们公司是一个不开源的公司,你们从来没有想过把自己的代码推到互联网上给别的人看,那这个时候你们就可以搭建自己公司的get lab服务器,作为你们自己的代码通话中心,这个也是可以的。哎,那这个大保托管中心,咱们就暂时先介绍到这里啊。
我来说两句