git推送代码冲突解决

文章目录

    • 一、无需手动解决的冲突
    • 二、需要手动解决的冲突

有如下场景:

小张和啊亮都git pull,两个人本地都获取了V1版本的代码,然后啊亮在本地将代码更新到了V3,然后将V3 push到了远程,git server发现V3就是基于V1版本修改的,于是git server将版本更新到V3

接着小张将本地基于V1的代码更改为V2后,也push到远程,此时git sever发现V2的代码基于V1修改的,并不是基于V3修改的,于是会报错,产生冲突(如果不报错,啊亮提交的V3就全没了)
git推送代码冲突解决_第1张图片

一、无需手动解决的冲突

git推送代码冲突解决_第2张图片
git推送代码冲突解决_第3张图片
git推送代码冲突解决_第4张图片
这时啊亮也和小张一样,获取同一份远程的代码,然后进行修改

在这里插入图片描述
git推送代码冲突解决_第5张图片

啊亮修改完成后,添加到暂存区以及本地仓库

git推送代码冲突解决_第6张图片

git log查看提交日志,发现本地分支已经领先于远程分支

git推送代码冲突解决_第7张图片

然后啊亮成功推送自己的代码

git推送代码冲突解决_第8张图片

啊亮成功推送后,小张也push

git推送代码冲突解决_第9张图片
这时就发生了冲突,于是啊亮git pull同步本地和远程的代码

git推送代码冲突解决_第10张图片
git推送代码冲突解决_第11张图片
可以看到,由于啊亮和小张修改的位置不同,所以冲突可以很顺利的合并

然后直接push即可

git推送代码冲突解决_第12张图片
这时小张git pull即可同步刚才啊亮做的修改
git推送代码冲突解决_第13张图片
通过git log可以查看提交日志,可以看见小张先做的修改,啊亮再做修改

二、需要手动解决的冲突

第一种情况中,由于小张和啊亮修改的是不同地方的代码,所以git工具可以帮我们自动合并冲突;然而当多个开发者修改的是同一个地方时,就需要我们手动解决冲突了

这时Windows和ubuntu两个客户端同时进行git pull,同时同步远程最新的代码
在这里插入图片描述

小张在Windows端修改了README.md

git推送代码冲突解决_第14张图片

然后add、commit,准备push

git推送代码冲突解决_第15张图片
啊亮在ubuntu端修改了README.md,此时与小张修改的是同一行
git推送代码冲突解决_第16张图片

啊亮很快就把自己的修改push到远程仓库

git推送代码冲突解决_第17张图片

然后小张这个时候才push,于是发生了冲突

git推送代码冲突解决_第18张图片

然后git pull,同步本地和远程的代码,此时git工具会自动合并冲突(git工具不一定合并正确)

git推送代码冲突解决_第19张图片
这就表示git自动merge失败了,需要小张手动修改冲突

查看冲突的文件

git推送代码冲突解决_第20张图片

做如下修改

在这里插入图片描述

最后push到远程

git推送代码冲突解决_第21张图片

git推送代码冲突解决_第22张图片

你可能感兴趣的:(git分布式管理,git,github,node.js)