00:00
好,下边我们来看一下get在合并分支的时候啊,产生冲突,那么首先说它为什么会产生冲突呢?因为大家看哈,你看我们现在有两个分支,这两个分支呢,其实你都是可以去改的,你都可以去向前去推进这个版本,当你都有修改的时候啊,如果你恰好改的是同一个文件的同一个位置,而且呢,内容又不一致,Getate在合并的时候就拿不定主意了啊,到底是听你的还是听他的呢?诶,这两个分支的内容我到底该选哪一个,他任何一个呢,他都不能够去轻易的去舍弃啊,因为这两个修改呢,都是呃有人去做的这个修改啊,那么对get来说呢,诶,不能够顾此失彼啊,这个必须由我们人去决定,到底是用哪个修改,这就是他会以冲突的形式呢,给我们体现出来,下边咱们就来看一看啊,比如说我们在master里边呢,我们去改一下这个good text。
01:00
比如说这个我们都改这个第行是常的到。哎,然后呢,这是我们master哈,你看刚才在这个状态的时候,这两个分支呢,它们其实是呃,状态是一致的啊,你看这个时候他们是指向的其实是同一个提交。但是现在呢,这个master呢,他就比这个hot fix往前走了一步。那么我们这个时候呢,咱们再切换到hot fix,然后呢,我们再hot fix里边呢,也去改这个也是改它的地啊BY,那么呢,添加到掌存区,提交到本机库。
02:12
这是我们hot fix里边所说的提交。好,然后呢,GI不认识岗位,我们看一下这两个分支呢,都做了相应的修改,是同一行啊,同一个文件的同一行,呃,有不同的这个内容,那么在合并的时候啊,这个时候呢,我们看看它是体现形式是什么。现在呢,我们其实哈,我们在hot fix上面把master呢给合并回来,是其实是也可以的啊,这个不是说你只能拿hot fix往master上面去合并,也可以拿master呢往hot fix上面去合并,所以这个时候呢,咱们就不切换到master哈,咱们直接呢在hot fix上面把master呢给合并过来。
03:02
那么这个时候呢,大家看。Autom啊这个文件,那么conflict就告诉我们呢,这个文件呢,它呃这个自动合并呢,就失败了,诶现在呢,转为这个手动的去合并,看后边这个分支的提示这哈,它不是这个单纯显示hot fix了,后边加了一个me表示呢,现在它处于呢正在合并的这个状态,那这个时候我们看哈,这个文件本身呢,你看没有产生,没有产生什么额外的文件,大家如果用过SV的话呢,在SN里边产生冲突以后,它会给产生新的文件啊,产生几个额外的文件,但是在我们GI这呢,就没有我们可以呢,打开这个文件去看一下,我们看到这个文件里边呢,除了我们自己去编辑的内容,它又给我们增加了一些这个特殊的标记。这些特殊的标记呢,我们需要去跟大家说一下啊,它们的这个含义是什么?
04:04
这就是冲突的表现啊,这个其实就是冲突的表现。呃,这个啊,从这个hide啊,到下边这一串这个等号,这呃,它的这个含义呢。这个指的就是我们,嗯,合并这个冲突的时候啊,我们害的呢,因为指向的是我们当前的分支,当前分支这个本地库里边儿的状态哈,诶我们可以这个简单的这个认为呢,这就是这个咱们,呃,就咱们的内容,或者说是这个当前分支的内容。然后呢,呃,下边这一部分哈。呃,从从这个等号啊,其实是从这一串等号,然后呢,他去到我们这个,呃,Master这个标记这个地方啊,那是这个,呃,另外一个分支的内容。
05:11
就是因为这两个内容啊,他们不一致,呃,Gate呢,在这儿呢,他拿不定主意了,他不知道该在在这两个选择里边该选哪一个,所以说呢。就给我们以分支的形式呢,展示出来,由我们自己去决定啊,到底是该使用哪一个,我们这个呢,可以记下,这个叫分支的表现。把我们刚才画的图粘过来,哎,那下边我们说呢,其实解决呢很好解决,把这些特殊的符号肯定是要删掉的啊,当你我们根据这个特殊符号呢,已经能够分辨是哪一个分支的内容的时候啊,就可以把这些东西就可以删掉了,诶删掉以后呢,你把这个文件的内容啊编辑到你满意的程度,也可能你你需要跟另外一个分支的作者呢去商讨啊,去这个我们面对面的去交流一下啊,看看是这个怎么去解决这个问题比较好啊,也可能是你自己决定的啊,这个就是呃,人与人之间沟通的问题了,当我们把这个文件修改好以后呢,写入退出。
06:20
这个时候呢,我们可以看一下这个get status。啊,那现在呢,他告诉你说哈,You have emerged pass,你现在有这个未合并的路径啊,Emerge pass它给折叠出来就是它,那么它提示呢,我们是使用这个get这个操作啊,去mark去标记为已解决啊,把这个冲突呢,这个这个状态标记为冲突已解决的这个这个状态。哎,我们执行一下,我们再用这个hit status再看一下啊,那么他告诉我们呢,说这个off conflicts fixed but you are still,那么所有的冲突呢,都被修复了,但是呢,你始终仍然是处于这个合并的这个状态,正在合并的状态,那么它提示你呢,用get commit to conclude,那么使用这个get commit这个命令,哎,去,呃,结束我们这个合并啊,那么这个时候呢。
07:23
你看这儿也是一个绿字是吧,这个是需要注意哈,我们以往呢用commit呢,我们以往呢都是带文件名啊,习惯上带文件名去做这个commit,但是现在呢,不能带文件名,你要带文件名,它会给你提示一个致命的错误啊,你不能去去去提交这个文件啊,在在这样一个特殊的状态下边,你看人家这个提示的时候呢,后边也没有带文件名,就是让你用get commit啊,所以这个是这个地方呢比较特殊,它在这儿呢,不能够带文件名啊,就是这个get commit,当然这个日志还是需要的,直接回撤,哎,然后呢,我们再get state,再看一下这个冲突呢,就被修复了,哎,你看在这儿的话呢,我们这个market这个标记哈,就没有了,所以这个一定要注意哈,这个那就是说这个冲突怎么去解决哈,这不是分支的表现啊,这是冲突的表现。
08:23
冲突的解决。呃,这个第一步,哎,是这个编辑文件删除特殊符号,呃,第二步呢,第二步呢,是我们去。把文件啊修改到满意的程度,诶第三步,那当然这个你修改完了以后是保存退出哈,这是肯定的,第三步呢,是get at后边带上这个文件名,第四步嗯,Get commit-M啊,带上你这个日志的这个信息,这个里边呢,一定要注意,呃,此时可meet时啊,此时可meet,嗯,一定不能带具体的文件名啊,就是我们上面这格式这个地方是不能带文件名的啊注意这个问题的话,我们解决冲突的就没问题了。
09:34
啊,这个里边呢,大家重点的去体会哈,这个分支,我们为什么要使用分支啊,分支的好处有哪些,然后呢,去体会我们呃,怎么样去这个解决冲突啊,就是冲突是怎么产生的啊其实这些理论呢,我们理解了以后啊,具体的操作呢,其实就很简单了。
我来说两句