个人开发分支代码合并到团队开发分支产生冲突解决办法

分支说明

这个冲突涉及到了GitLab远程上的devdev_fangju分支,分支说明如下:

  • dev分支为项目开发分支
  • dev_fangju分支为我之前从dev分支上克隆的分支,这个分支属于我的个人开发分支

我每次先在自己的本地开发分支dev_fangju上面编写代码,然后将代码提交push到远程的dev_fangju分支,之后在远程merge requestdev_fangju分支上的代码合并到dev分支上,等待别人审核。因为dev分支为整个团队一起开发的分支,在我克隆dev分支的代码至dev_fangju分支上之后我就没有从dev分支上pull代码了,所以一般情况dev分支的HEAD结点在我的分支dev_fangju之前很多。
在这里插入图片描述

问题描述

今天在申请合并代码的时候,我的dev_fangju分支与dev分支上冲突了。原因是因为我的分支和远程dev分支是不同步的,其他人在远程上提交了新的代码,正好我的代码与他的代码发生了冲突。

解决方法

因为我写的代码需要提交给别人审核,所以我是通过以下方式解决的

1.切换到本地的dev分支

git checkout dev

2.拉取同步远程dev分支的代码

git pull

3.从本地的dev分支上再引出一个dev_fangju_new分支

git checkout -b dev_fangju_new

4.合并本地dev_fangju的代码至dev_fangju_new

git merge --no-ff dev_fangju

这里将会产生冲突,直接点击Android Studio中的Version Control中的local changes解决冲突即可,冲突文件的界面如下:
在这里插入图片描述
在这里插入图片描述
左边当前分支dev_fangju_new的代码,右边为待合并分支dev_fangju的代码,中间为冲突之后的代码,这里可以按照这个提示自己去合并,最终将保留中间部分的代码

5.提交dev_fangju_new分支的代码

git commit -a -m "fix conflict:last commit description"

6.推送dev_fangju_new分支的代码至远程,并在远程创建新分支dev_fangju_new

扫描二维码关注公众号,回复: 8904271 查看本文章
git push origin dev_fangju_new

7.在远程申请合并
在这里插入图片描述
这里会发现现在没有冲突了,正常合并即可。但是远程多了一个新分支

步骤后面可选

8.删除本地和远程老分支dev_fangju

git branch -d dev_fangju	#删除分支分支
git push origin :dev_fangju		#删除远程分支

9.修改远程分支dev_fangju_new的名称为之前的分支名称dev_fangju

git branch -m dev_fangju_new dev_fangju		#修改本地分支名称
git push origin :dev_fangju_new		#删除远程分支
git push --set-upstream origin dev_fangju	#新增远程分支

10.同步远程dev分支的最新代码至本地的dev分支

git checkout dev
git pull

第二种思路

假如我写的代码不需要提交给别人审核,那么我其实可以不用那么麻烦,思路如下:

1.切换到本地dev分支,拉取远程dev分支的最新代码

git checkout dev
git pull

2.合并本地dev_fangju分支的代码至dev分支

git merge --no-ff dev_fangju

3.解决冲突,提交冲突后的代码

git commit -a -m "new commit description"

4.推送最新的代码至远程dev分支

git push

附录

之前我也遇到了这个问题,之前的解决办法是

1.将远程dev分支的最新代码拉取到本地

git checkout dev
git pull

2.在本地的dev_fangju上合并dev分支的代码

git checkout dev_fangju
git merge --no-ff dev

3.解决冲突,提交代码

 git commit -a -m "new commit description"

但是这种方式就有一个问题,在我最后一次和远程dev分支提交的交叉处,因为远程的dev分支一直在开发中,别人也提交了很多代码,我在拉起远程dev分支代码的时候把别人之前提交过的代码也拉取过来了,那么我的现在的分支上就会多了很多别人的提交记录,我在把我的代码push到远程的时候就会看到很多别人的提交。一般来说,我只需要提交自己修改的代码即可,但是这种方式的话就把别人的代码给拉取过来了。因为都是远程dev上的代码,所以中途没人再次提交的话也不会产生什么问题。

4.推送代码至远程

git push

5.申请合并dev_fangju分支的代码至dev分支即可

发布了110 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40833790/article/details/103393279