分支冲突的原因

以现在浅薄的认知,遇到产生分支冲突的情况主要有两种,也可看成一种(同一个文件同一行):

1.情况一:A、B拉取了同一个分支同一个版本的代码,并且在同一个文件的同一行上做了不同的修改,A首先完成开发任务并且提交代码,B在之后也完成了开发任务,此时为了保持代码同步,B需要首先将修改文件提交到本地的git仓库,然后拉取最新的代码,此时冲突会产生。冲突原因在于A、B都改了同一个文件的同一行代码,B在拉取完代码后会紧接着做提交操作,那么在两个人都改过的行中应该用哪个人提交的代码呢?由于这个原因机器是无法做出判断的,此时就产生了冲突

2.情况二:A、B在不同分支上开发,一开始两个分支代码保持一致,然后两个人都完成了开发任务并且提交,但是A、B在各自分支上都改了同一个文件的同一行代码,此时需要将两个人的成果合并到一起,即合并分支。记住此时A、B在开发过程中并不是只提交了一次,而是可能在各自的分支上提交了很多次,才完成开发任务,但是他们都有共同的出发点,即在开发之前两个分支的代码是保持一致的。开始合并分支,A分支合并到B分支(A的新代码覆盖B的旧代码),或者B分支合并到A分支(B的新代码覆盖A的旧代码)正常情况下他们应该改的是不同的文件,然后合并后覆盖了旧代码(指刚开始开发的版本),但是现在产生一个情况,两个人在同一个文件的同一行都做了修改。此时应该选用哪个分支的最新代码呢?机器不会帮我们做出选择,所以产生了冲突。

冲突是个棘手的问题,需要相关开发人员协同解决。及时解决是非常必要的,如果没有及时解决且直接合并了分支,则需要先回退代码。如果不及时解决冲突并且在之后又做了很多开发(包括后续合并分支),当发现问题时,可能会是一场灾难。合并分支需谨慎,解决冲突要及时!

posted @ 2021-05-20 17:31  JonnyOu1012  阅读(156)  评论(0编辑  收藏  举报