00:00
下面说一个也是比较重要的一个问题,就是呃,在使用Su的时候呢,怎么去解决这个冲突,那在解决冲突之前呢,我们先给大家去制造一个冲突啊,什么情况下会产生这个冲突,我们看你比如说我们现在这个应该是在这个汤姆啊杰瑞这个工作区里边,我在这儿改呢,我这给给他改一下这个改一下名字吧。就是这是这是我杰瑞呢,在这个第多少行,第第九行我做了一个修改是吧,然后呢,我进行了一个提交。哎,这就是这个Jerry啊,好嘞。操。诶,然后呢,这是我杰瑞的提交,那这个事呢,你看他正常提交了,这不是这个挺好的吗?但是你看我现在这个是在这个汤姆这个里面是吧,我在汤姆这个里面,本来呀,我应该先更新一下,我再去提交,可是呢,我汤姆呀,我也不知道你这个杰瑞做了修改了,我也在这个同样一个位置第九行做了一个修改,哎,比如说这个汤姆,哎,这是我汤姆做的这个修改,那么这个时候呢,我修改完了,我就想提交啊,我也不知道那个杰瑞这个进行了修改了,我一提交,然后就是这个,这是汤姆,嗯,OK,诶这一下就出事了,你看这是不是报错了呀?呃,说他产生了一个问题,什么问题啊,这个提交失败,这个文件呢,已经过。
01:52
时了,诶过时了,提交不了,那这个怎么理解这过时呢?大家想你看啊,我杰瑞提交完了以后,这个版本是不是变成十了,对吧,可是我现在呢,是在这个八的这个基础上呢,进行这个提交的,所谓就是这个不知有汉无论未尽是吧,哎,我还没有这个,哎,我们就是这个看一个图啊,看一个图来说一下为什么会什么叫过时啊,为什么会产生冲突,这个也不难理解啊,就在这,那大家看,首先呢,我从这个仓库里边,我两个人都去检出了一份文件,一个Henry,一个Sally,他现在这个文件的版本都是这个A,那么Henry也改了一下,Sally也改了一下,He瑞改完以后呢,变成A撇了,Sally改完以后变成A2撇了,但是他们呢,都是在这个A的基础上做的这个修改。
02:52
对吧?诶,然后呢,我这个Henry呢,他提交了是吧?他提交了提交到这,那服务器端已经变成A撇了是吧?那这个A呢,已经成为历史了,对吧?哎,那么你这个两撇呢,相对于这个A撇来说,它是不是就已经过时了,对吧?哎,人家都已经用这个单反了,你还现在还用那个胶卷的相机呢,你不就是已经过时了嘛,是吧,你out了,那现在呢,你这个Sally呢,如果说你这个再提交的话,你就已经提交不了了,因为你现在是一个过时的一个文件。
03:29
然后呢,你过时的文件呀,你下一步怎么做呢?你提交不了了,你必须得更新一下。诶你看呃,其实啊,你文件过时以后呢,如果说你这个你修改的地方呢,跟人家这个服务器端的不是同一个地方,实际上是可以提交的啊,实际上这是可以正常这个更新的,但是现在这个问题啊,你看呃,我这个服务器端呢,把这个服务器端的这更新拿过来以后呢,呃,都是在这个原来这个第九行呀,这个地方咣叽一下它撞车了,诶你这个地方呢,有一个新的修改,和我服务器端这个修改呢,两个不一样,那作为这个SN这个程序来说呢,它就不知道给你使用哪个好了,诶这事必须由这个由这个人啊,由这个人呃人工的去解决,你必须得去决定你到底用哪一个,或者说你最终要用哪一个啊才能够去解决这个冲突,那我们现在看到这个状态啊,它就是一个冲突的一个状态。
04:36
呃,他这有这样几个特征,你看这加了一些这些符号是吧,看着还挺挺吓人的,那这时候是什么意思啊,你看呃,说这个从这到这儿这一部分呢,是咱自己的啊,是咱自己的,就是我这个发生冲突之前呢,我自己是一个什么状态,那然后从这到这儿呢,是这个服务器端的这个最新的冲突呢,就是他俩之间发生了这个冲突,这是一方面,另外一方面呢,会产生几个新的文件,看着了吧,有一个扩展名是点嘛,有一个是R10,有一个R8,这里边都是些什么东西啊,我们用这个文本编辑器打开,你看这点慢呢,实际上是咱自己的冲突之前咱自己的内容,然这个点R8呢。
05:31
就是发生冲突之前服务器端的那个啊,那个一致的那个版本,就是安全的那个版本,而十呢,是发生冲突的时候,服务器端的那个版本是吧,他把这各种这个相关的情况呢,都给你罗列出来了,让你的互相之间可以进行一个参考,当然这说一下啊,这这个R后边这数字呢,不是固定的,它是你这个这个R8呢,就是版本为八的时候,你这个love.java它的这一个状态上面这十的时候呢,是版本为十的时候,这样一个状态,这个版本是不一定的,小版本是那个发生冲突之前的啊,大版本版本号呢,是发生冲突当时的时候服服务器端的那个版本,那下面这个,诶这个冲突我们也看到了啊,我们也知道什么情况下会产生冲突,就是同一个地方你也改我也改,然后这个两个人都提交,你就提交不了了啊,你后提交的那个人你更新他就冲突了,那这个时候下面这个问题就是怎么。
06:31
怎么解决这个冲突是吧?哎呃,在这个冲突的文件上啊,大家看点右键team这个里边有一个编辑冲突点,它它会呢,给我们切换到这个界面,这个界面呢,有最大的一个好处就是它把这两边这个文件啊,以这个对比的这个形式给我们呈现出来,让我们能看到具体是哪一条语句发生了这个冲突是吧?哎,那么这个时候呢,这个右边这个啊,这个你改不了,右边这个改不了,你只能看你可以根据你自己的这个需要和这个两边的这个情况去改你这个左边这一部分是吧?哎,当然了,实际上其实这个时候啊,你如果已经切换到这个界面以后呢,你看这是一个没有保存的一个状态,呃,你只要一保存,他就认为呢,你这个已经已经这个编辑完了啊,或者说呢,比如说这个我们看他这个能不能复制啊,呃,可以复制,我们把他这个东西呢,拿到咱们这个来。
07:31
意思就是这个两两,这两种情况呢,这个两条语句我都要,但这个里边可以根据你自己的这个需要去修改啊,压坏了这个还奥斜杠还不能用。算了,咱就不写它了,嗯,保存一下,嗯,然后这个时候这个这个界面呢,就可以去关掉了。然后呢啊,我们再做一个操作啊,告诉这个eclipse,我已经把这个冲突解决了,还是在冲突的文件上点右键这个team诶标记为解决,点它这些选项,我们就不需要管这个具体的这个细节了啊,如果说你觉得这个冲突你这个代码已经改好了啊,没有问题了,你就点这个OK就行了,你看现在呢,这个文件本身呀,它已经改成了这个你编辑冲突之后的这样一个状态,同时呢,这个左边这些文件呢,这些你看它也已经自动都给你删掉了,诶呃,然后这个我看刷新一下,现在你看啊。
08:42
这个图标已经变成了一个星号,意思是就是有一个呃,有这个比服务器端的更新的一个更改,就是这个准备提交的一个状态,对吧,那你这个时候你提交一下就可以了,哎,这就是呃I conflict就是编辑冲突,哎这时候呢,它就这个正常了,我们再来这边呢,再进行一个更新就可以了。
09:13
哎,这时候你拿到的就是这个正常的一个服务器端的一个状态,就是我们说这个解决冲突的一个办法啊,那这时候大家想啊,我们冲突肯定是呃,希望他越少越好是吧,那你大家想我们怎么能够尽量减少这个冲突呢?啊,大家说怎么减少这个冲突呀,哎,你这个减少冲突肯定是得从这个冲突的这个发生的原因这入手吧,哎,原因呢,实际上就是因为你这个Sally呢,啊,我们说这个你做这个修改之前呢,如果说你能够先更新一下,在这个最新版本的基础之上进行这个修改,那你就再提交的话,它就不会有这个冲突的问题了,是吧?所以说呢,呃,为了减少这个冲突呢,我们可以去,呃,尽量你再去修改一些这个公共的一些文件的时候,比如说一些工具类啊,比如公共的一些东西,你可以先去这个,呃,先更新一下,拿到这个最新的,在最新这个基础之上呢,进行这个修改。
10:14
这是一个,呃,再一个的话呢,就是你把这个怎么解决这个冲突呢,你掌握这个方式,偶尔发生一两次这个冲突呢,这个也难免啊,你能够解决就行了,再一个还有一个就是你团队互相协作的时候,你小组之内你有一个人与人之间的一个沟通,这个也很重要,对吧?哎,我们不可能说什么东西呢,都依赖这个机器来解决,也不可能什么东西这个程序都能给我们解决好,是吧。
我来说两句