提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、前提
假设现在有个冲突演示项目conflict_project
开发人员张三和李四分别克隆初始化项目
张三项目:
李四项目:
二、都是以最新版本推送情况
这种情况不会发生版本冲突问题
张三对method方法进行修改,添加一个zhangsan1的方法提交并且推送到远程仓库。
此时李四拉取最新的代码也对这个method方法提交一个lisi的方法提交并且推送
以串行的方式提交是不会有任何问题的,因为此时两个人操作的版本都是最新版,但是实际开发中一般都是并行操作的,你当前拉取的版本不是最新版,就会有版本冲突问题
三、不是最新版本推送情况
3.1 同一分支
此时张三拉取最新的版本,并且又添加了一个zhangsan2的方法
此时李四并不知道张三提交了一个新的版本,所以就没有拉取代码,从而又添加了一个lisi2的方法
这种情况冲突比较简单,会自动更新。
张三偷偷修改了李四的方法提交
此时李四不知道张三在lisi2方法上做出了修改,李四没有拉取最新版本的时候,提交李四推送版本的时候就需要手动解决冲突
最后要将手动解决冲突合并的代码推送到远程(同一个分支手动解决冲突可以直接推送)
3.2 不同分支
李四项目:新建一个分支b2并推送到远程仓库
张三项目:获取李四推送的b2分支
李四在b2分支修改init方法并且提交推送
张三切换到远程b2分支拉取最新版本
张三切换到master分支修改init方法提交并且推送,然后合并b2本地分支(因为都不是最新版本所以会冲突)