一、pull更新代码冲突
二、cherry-pick冲突
1、冲突演示
本地check out到需要提交的分支release-wtyy,双击目标分支master,选择需要从master上cherry-pick过来的commit,右键点击cherry-pick。表示从master上合并该commit到release-wtyy。
(1)如果没有冲突,会自动add--》并自动commit,可以在待push的列表看到;
(2)如果有冲突(即使只有一个文件冲突),该次cherry-pick的所有文件都不会自动commit,不过其他没有冲突的文件会自动add。
点击cherry-pick有冲突的话会出现一个冲突的提示弹框
并给出三种操作方法:
下面看下怎么解决这个冲突
2、冲突解决
2.1、直接关闭上面的弹框
这时进入commit列表也能看到冲突的文件
2.2、进入源文件
从项目进入到源文件中(不是从coomit里面点,那个是对比,在冲突解决之前点击那里会出来三个窗口:left、result、right)。
2.3、在源文件中解决冲突
搜索===,即为冲突标记,如我这里有两个冲突,从感叹号提示可以看到引起了13个error:
去除===,并按需解决代码错误(这个过程可以参考远程代码决定冲突代码的去留)。直到没有红色感叹号(error):
2.4、将冲突文件add到本地工作区
解决冲突后源文件以及commit列表显示的还是红色,这时候执行add操作添加到本地工作区,因为冲突文件不会自动add。
① 可以在文件中右键选择git--add,
② 也可以在命令行输入
git add .
执行后文件颜色就变正常了,不是红色了
并且在coomit里面点开,只显示本地和远程的变更,不会像之前一样显示三个窗口(left、result、right) 。
2.5、commit并push
三、merge代码冲突
1、statsh本地变更
2、merge
本地check out到需要提交的分支dev-wtyy,双击目标分支master。在master上右键选择merger into dev-wtyy,表示将master合并到dev-wtyy。
(1)如果没有冲突
(2)如果有冲突,同上面cherr pick的冲突,冲突文件不会自动add进入本地缓存区。弹出提示
3、解决merger的冲突
同上。
3.1、直接关闭上面的弹框
3.2、进入源文件
搜索===,删除===并解决代码问题,直到红色感叹号消失
3.3、将冲突文件add到本地工作区
这时候文件名不是红色的,变成正常颜色了。