理解git为什么会冲突,模拟冲突

302 阅读1分钟

环境,a用户,b用户,远程仓库用gitee或者github

 

模拟冲突,a,b用户操作master主分支

第一步,a用户创建一个远程仓库,并在仓库里创建一个index.html文件,然后在这个文件里第一行写

111
(如下图红色箭头)

\

第二步,b用户拉了这份代码,看到a用户上传了index.html文件,并且第一行是

111

然后,b用户把第一行代码改为

111222
,上传远程仓库(这肯定是成功,原因是,这整个文件都是新的,然后b用户修改了上传,因为b是第一个上传的人) (如下图黄色箭头)

\

第三步,a用户修改index.html文件的第一行代码,改为

111333

情况一,然后直接上传远程仓库,这个时候会冲突,原因是: (如下图蓝色箭头)

        1修改了同一行代码

        2没有先拉取远程仓库的最新代码(现在远程仓库最新的是

111222

       这个时候解决冲突是:要么不要a用户的修改的

111333
,要么覆盖远程仓库的
111222

\

情况二,先拉取远程代码,这个时候会冲突,原因是: (如下图绿色箭头)

        1修改了同一行代码

        这个冲突叫本地解决冲突,情况一的冲突叫远程解决冲突,一般都是在本地解决冲突好一点,因为...(这是个人理解哈)

        这个时候解决冲突是:删掉

111222
,写
111333


看图可能更清晰一些,随便画的,凑合看吧,别喷

​​