idea+git合并分支解决冲突及详解
1.什么是冲突
冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致。读起来有点绕,结合下面的案例理解。
从上面对冲突的定义来看,冲突时发生在同一个文件上的。
2.生产上冲突的场景
常见冲突的生产场景如下
更新代码
提交代码
多个分支代码合并到一个分支时
多个分支向同一个远端分支推送代码时
git的合并中产生冲突的具体情况:
<1>两个开发者(分支中)修改了同一个文件(不管什么地方)
<2>两个开发者(分支中)修改了同一个文件的名称
注意:两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。
总结:上面各种情况的本质都是,当前文件与合并文件不一致,因此不论哪种情况其解决冲突的方法是一样的。
3.idea中解决冲突
模拟场景:
假设有另个开发人员开发同一个项目,并且编写同一个文件,工作流程如下:
1.01号程序员先上传文件conflict.txt,并继续在conflict.txt上写代码;
2.02号程序员更新项目代码,并在conflict.txt上写代码,写完后,在提交到远程服务端;
3.当01号程序员把写完后,准备提交代码了,这时的正规操作手法,先更新在提交,但是在更新的时候必然会冲突,因为这时候更新的代码conflict.txt与本地仓库代码conflict.txt不一致
提交前,我要更新,冲突了:
解决方案如下:
- accept yours:代表以自己的为准;
- accept theris:代表以更新下来的文件为准;
- merge:代表手动合并
一般解决冲突我们都是选择merge
将需要的内容点击:">>"既可以合并内容到result中,不需要的内容点击“x”即可,合并完成后点击apply即可。
值得注意的是,最将所有的“x >>”符号都要处理完,不需要的点击“x”,需要的点击“>>”
最后,不论是什么场景下产生的冲突解决方法是一样的。
- 详细步骤
1、 切换分支
1)在idea页面右下角点击分支名
在这里插入图片描述
2)在git 分支选择框中选择项目一步步选择需要的分支
这里先演示切换到master主干分支,点击Checkout切换
在这里插入图片描述
3)切换master主干分支成功
在这里插入图片描述
2、合并分支
1)master合并bug001分支
2.1.1. 拉取分支步骤:在项目上右键,Git -> Repository -> Pull
2.1.2. 在更新代码的时候,选择001分支代码,合并到当前分支master,点击Pull
2.1.3. 更新结果,显示37个文件已更新
2.1.4. 从001分支更新代码到当前分支master后,已存到本地仓库,因此需要把本地仓库完整的master分支代码Push到远程分支master分支;Git -> Repository -> Push
2.1.5. 点击Push后,出现详细的推送说明,点击Push
2)develop合并master分支
2.2.1 切换develop分支,原则上develop分支的代码必须和master主干保持一致
2.2.2. 拉取分支步骤:在项目名上右键,Git -> Repository -> Pull,参考2.1.1
先更新远程develop分支到本地,看看有没有需要更新的代码,有的话直接更新
2.2.3. 显示 no items,说明没有需要更新的代码
2.2.4 master分支已经最新的,因此需要把master分支代码合并到develop分支
Git -> Repository -> Pull,选择master分支代码,合并到当前分支develop,点击Pull
更新结果为37文件
2.2.5. 把本地仓库develop分支的代码提交到远程分支develop;Git -> Repository -> Push
显示Push成功
3)Hebei合并develop分支
2.3.1. 切换Hebei分支
切换成功
2.3.2 更新本分支代码,拉取分支步骤:在项目名上右键,Git -> Repository -> Pull,参考2.1.1
2.3.3 合并develop分支代码到当前分支hebei; Git -> Repository -> Pull
2.3.4. 更新时出现冲突文件(20200604 更新,内容是最新的,和上面develop分支内容已不一致)
解决冲突:
选中文件,点击右侧的Merge…
2.3.5. 冲突文件界面解释
冲突文件界面,分为三个部分,最左侧是本地代码;中间是解决冲突后的最终结果文件;最右侧是远程分支的代码
通过比较文件内容,合并需要的代码到中间的位置,最后点击Apply就完成了
解决步骤如下:
更新后的结果为5个文件,其中包含一个解决冲突后的文件
2.3.6. 因为在合并develop分支代码到当前分支hebei 时出现冲突,并且解决冲突后,需要先把代码提交到本地仓库,再把本地仓库的代码提交到远程分支。
右击项目名:
Git-> Commit Directory…
填写适当地 提交信息,然后点击Commit and Push
Commit and Push解释:
先把本地代码提交到了本地仓库,然后等待片刻会自动弹出Push的窗口,再把本地仓库代码推到远程
2.3.7 查看提交信息,然后点击Push,即可把代码提交到远程分支。
当然以上可以用merge into current
5.关于冲突的个人心得
多人协作开发的时候,如果出现了你没有改过的文件跟你冲突了,一定要去找到当事者,说清楚是如何冲突的;
然后协商解决,千万不要擅自拉别的分支去试图解决冲突,或找文件覆盖,更或者以自己的文件为准.
同时记住,解决了之后,要add 和 commit 最后push.为保证万无一失,最后在冲突都解决之后,重启项目;
保证至少不会有立即奔溃的现象发生.然后才去提交,push.
提交的时候,一定要保持清醒,先搞清楚自己要提交的文件之间的关系,然后再提交,这样才不会有文件缺失的问题,造成奔溃.
如果任务比较多,又开了多个分支,分别进行开发,再次强调,一定要清楚自己在各个分支上做了什么,自己要提交的是什么.最好是能做个详细的笔记,没有把握宁愿不要去提交到生产服务器.
提交代码的时候不要走神,因为这是一个神圣的时刻!
- 工作中如何使用
master分支和生产版本代码一直保持一样。每次批次版本上线后,把该批次功能分支合到master分支,然后master分支合到dev分支,再把dev分支合到各个功能分支。如果有多个功能分支同一批次需上线,把这几个分支合到test分支,test分支经过所有测试后,具备上线条件,作为批次功能分支进行打包,部署到生产。
更多推荐
所有评论(0)