00:00
下边咱们首先给大家来介绍一下版本控制。我们从版本控制的思想和工具两个方面来介绍,版本控制的思想我们又从个人和团队这两个角度来引入。首先我们看看为什么我们在个人开发的时候也需要版本控制。举个例子,比如说我们要写一个类。这个类呢,比如说这个处理数据。那我刚开始呢,我可能只是想好了,我要写这个类啊,给这个类起了一个名字,然后呢,我就想在这个类的基础之上。看看我具体怎么去处处理这个数据呢?我要写一个方法。我要处理两个传进来的数据,一个是A,一个是B。
01:01
这两个数据我怎么去处理呢?我就想啊,这两个数据呢,我把它给加起来做一个加法。哎,在这呢,我就可以来打印这个result。诶,这是我初步的一个想法,然后呢,在这个基础之上,我又希望能够加一些这个日志的打印的操作,比如说呢,这个方法开始的时候我打印一下。哎,这个我写上这个是方法开始执行加和的这样的操作。然后呢,呃,在下边再写,再写一个日方法结束,哎,加和操作的结果是,哎,我把这个可以放在这。
02:17
呃,然后呢,我写完这个方法以后,我增加了这些修改以后呢,我又觉得还是不太对,我这个数据啊,不能用加的方式来处理,我得用成的方法来处理,呃,如果没有版本控制工具呢,可能我们需要在这个版本的基础之上呢去修改。就是我们可能得在这个类的基础上去修改,那么呃,我们得在这儿呢,去给它改成乘啊,呃,在这儿呢,去执行这个乘积操作。哎,这个乘积操作它的结果是,那么我们就说哈,你这个我们现在写的比较简单,这样改呢,我们觉得也姑且可以接受,但是呢,你想想我们如果写一个类,或者说开发一个项目的时候,涉及到很多个类,涉及到很多个方法,甚至于说很多方法呢,它都有很多行,你这个时候呢,我们一点一点的去改啊,我们就会把这个代码呢,改的非常的乱啊,不利于我们开发和维护啊,也会影响我们的进度,这个时候呢,我们就想,如果我能够在这个基础上去进行修改啊,那么这个这这个工作量呢,或者说思路呢,就能够清晰很多,工作量也能够极大的减少,比如说呢,大家看我在这个版本的基础之上去进行修改的话,我在这儿把家呢改成城。
03:44
诶,然后呢,这两边呢,我分别呢,去加我这个日志的这个操作。嗯,因为我在这儿,咱们为了演示哈,我在这儿就直接这个复制过来。执行这个成绩的操作。
04:06
嗯,那么我们想实现刚才这样的操作啊,它的前提呢,就是我们。在开发过程中,每一个历史的状态都有一个地方呢,帮我们去进行记录啊,你只有记录下来,你才能够回到某一个历史的这个状态,呃,在这个某一个历史状态的基础之上呢,再去做你想要的修改,呃,也就是我们用大白话说呢,就是呃,有后悔药吃,诶你可以回退啊,回退撤销你的这个操作,这就是说我们在开发过程中呢,诶,为了提高效率,为了能够去更多的更自由的去进行一些思路的尝试,哎,我们确实呢,需要这个版本控制的帮助。啊,这是从这个个人的这个角度上来说的,那么我们从这个团队协作的这个角度怎么来理解呢?呃,大家想我们每一个人呢,都会去开发自己要负责的功能,可能呢,有可能我们多个人在开发同一个项目的时候。
05:10
我们会需要去操作同一个类,诶比如说呢,在这呢,有小刘和小王这两个开发人员,我们都需要去开发这个类那。小王呢,是现在把这个类呢,写到我们现在这个,诶现在这样一个程度了,哎,这个时候呢,他会有他的一个新建的一个文件,但是这个这个版本呢,这个是我们小王诶小刘。诶,他编辑的这是他的版本,那现在呢,这个小王呢,他需要对这个文件呢,去进行一些这个修改。小王呢?他做的是这样一件事。哎,他就在这个类的基础之上,他把这个小刘写的这个类呢,给下载下来,哎下载下来,然后呢,小王呢去增加了一个方法。
06:07
比如说呢,他去做了一个求和的一个操作,直接呢返回。A和B的和这个。我们这个这个呢,就是我们小王所做的,现在呢,小王所所要做的呢,就是把他所修改的这个东西给上传到我们文件服务器上,呃,现在看呢,是没有什么问题,但是呢,因为是协同开发,那小刘也要改这个文件,小王也要改这个文件,如果是我们小王还没有把这个他修改的这个版本上传上去的时候,小刘呢,他也做了修改了。啊,你比如说呢,小刘呢,在同样的这个位置吧,他写了一个方法叫。
07:07
他想要在这个地方呢,去打印一个消息。诶,他写了这样一个操作,那这个时候大家想。如果我们使用的是普通的文件服务器的话,我们小王呢,把他所做的这个修改上传上去以后,会把这个小刘的文件给怎么样啊?哎,那你想假如说我们假如说这边是我们的文件服务器哈,这个嗯,最初的这个版本。最初啊,最开始的时候是这样的,然后呢,小王呢所做的修改,诶做了这样的修改,但是小王呢,还没有上传的时候呢,小刘他先上传了这个版本。那么这个服务器呢,就变成这样了,小刘他上传上去以后呢,我们这个小王哈,诶。
08:00
他把他自己的呢,他也上传上去了,普通的文件服务器呢,是不能够去管理文件的内容的,所以说吧,这个时候小王上传的文件呢,就把小刘的给覆盖掉了,覆盖掉以后呢,你看。服务器端的文件里边只有小王所做的修改,而我们刚才小刘所做的修改,他增加的这个方法呢,就没有了,那么这个很很明显是有害于我们开发的这个进度的啊,那你小刘的写的这个方法都白写了嘛,哎,所以说呢,呃,从这个团队写作的角度上来说,我们也确实呢,需要有这样一种这个文件服务器,就是说呢,他不光能够管文件本身,而且还能够管文件里边的内容,能够允许我们很多个人呢去同时修改这个文件啊,你改你的,我改我的,能够并行不悖。哎,这些呢,包括我们刚才所说的这个具体版本的这个记录版本的管理啊,这些呢,就都是属于我们版本控制工具啊,所要解决的问题。
我来说两句