新版IDEA中Git的使用(四)——解决冲突

说明:之前介绍过新版IDEA中Git的基础操作、分支操作和回滚代码,本文介绍基于新版IDEA,如何解决代码冲突。

避免冲突

解决冲突的最好方法就是不要发生冲突,这里我介绍下面几点,可以避免代码冲突;

  • 时常做pull、fatch操作,不要让自己本地仓库落后太多版本;

  • 在分支操作,如切换分支、合并分支、拉取分支前,及时清理Change,保持自己分支洁净;

  • 在合并分支时,先拉取后合并,最好是切换到要合并的分支,拉取代码,再切回自己的分支拉取合并分支的代码;

  • 对于不确定的分支,在操作前,先比较分支的差异,做到心里有数;

  • 合并代码,慎重使用Cherry-Pick,可能会出现冲突;


逐条说明,第一点,时常做pull、fatch操作,如果你的分支是从dev主干分支或master分支分出来的,应该时常拉取dev主干分支或master分支的代码,以免后面合并的时候出现冲突,即便有冲突也能在拉取的时候解决,而不是到要合并的时候再解决,就像电影《教父》中说的,坏消息要早点汇报。

fatch操作,能更新远程仓库的分支。就是说,当有其他伙伴重命名了分支、新增、删除Git分支,要用fatch操作更新到自己本地仓库。

在这里插入图片描述


第二点,分支操作,及时清理Change,也是为了避免冲突,这是一个好习惯。如果本分支做了修改,没有commit或者Shelve Changes,在切分支的时候,就会弹出这个选择框,很不爽。

在这里插入图片描述

另外在回滚代码的时候,如果你分支的代码都清理掉了,没有未Commit的代码,回滚出现下面的弹框,选择Hard还是Keep效果都是一样的,这两个选项的区别在于对未commit代码的操作。

在这里插入图片描述


第三点,合并分支前,最好先拉取,这是常识,就像用SVN要先更新再提交一样。因为你不拉取远程仓库的最新代码,在push的时候,就会提示要Merge还是Rebase,这不是给自己找麻烦吗?

在这里插入图片描述


第四点,对于不确定分支,在操作前,先比较一下分支差异,可以用下面的这个选项(Compare with),可以比较Commit的差异。如果甲分支的所有提交在乙分支都有,或者差异的部分正式乙分支本次开发,新提交的。这说明乙分支是从甲分支里拉出来的,放心合并吧。

在这里插入图片描述

比较分析

在这里插入图片描述


最后一点,合并代码有几种方式,Merge、Cherry-Pick,还有一种Get,就是比较分支差异,直接获取文件到当前分支。Merge是合并代码的主流选择,Cherry-Pick,可以将另一分支的指定Commit合并到当前分支,非常方便,但是有出现冲突的可能。

设想一个场景,有两位开发同事,张三、李四,两位同事都是基于main-dev分支,拉出自己的开发分支,如下:

在这里插入图片描述

张三在自己分支合并完代码,都是用Cherry-Pick的方式,将代码合并到main-dev分支的,而李四则是用Merge的方式合并的。假设有个文件Other.txt是在main-dev分支上的,张三和李四的分支都有这个文件,李四修改了这个文件的内容,并且Merge到了main-dev分支,张三一直都没有修改这个文件,然后在后来的一天,想要把代码Merge到main-dev分支,就会出现冲突。

在这里插入图片描述

这是因为张三一直用的是Cherry-Pick,只是把自己的提交合到了main-dev分支,少了让自己分支与main-dev分支同步这一步,虽然方便了,但是后续合并代码就非常坑了,以往文件有冲突的都要解决,可能时间都过去了很久。

通过Git分支图,也可以看到张三这条分支(紫色的),单开后,一直是孤立的,没有合到主干分支。

在这里插入图片描述

但话说回来,Cherry-Pick也有使用场景,如果你们项目的分支管理是一个任务对应一个分支,像main-dev-zhangsan-手机短息登录开发,任务完成,代码合到稳定分支,就把此分支删除掉,这种情况使用Cherry-Pick就很方便,不存在冲突的。

解决冲突

如果冲突无法避免,如下,只能手动解决了,

在这里插入图片描述

Accept Yours:使用你版本的代码;

Accept Theirs:使用他们版本的代码;

Merge:手动合并;

这里的你的,他们的,是当前分支的角度。如把main-dev-zhangsan分支 into main-dev分支,这里的your就是main-dev分支,Theirs就是main-dev-zhangsan分支。

在这里插入图片描述


Merge界面如下,可选择对应的箭头(>>)或者叉号(X),采取对应的代码,所有的冲突解决完,点右下角的Apply这个文件的冲突就解决完了

在这里插入图片描述

如果不想解决,点Cancel,后面可以在分支上选择Resolve Conflicts...(继续解决),或者点Abort Merge(放弃合并)

在这里插入图片描述

Abort Merge:放弃合并,Abort,夭折的意思;

Resolve Conflicts…:解决冲突;

在这里插入图片描述

如果是Cherry-Pick出现的冲突,在下拉列表最下面,会有Abort Cherry-Pick的选项

在这里插入图片描述

解决冲突大概如此,需要注意,当你无法把握发生冲突的代码时,最好找来发生代码冲突的同事一起看,并问下合并代码的方式(Merge还是Cherry-Pick),不要自顾自地合并。

总结

本文介绍了在新版IDEA中Git使用的解决冲突,其他文章参考下面:

  • 新版IDEA中Git的使用(一)——界面介绍、基础操作

  • 新版IDEA中Git的使用(二)——分支操作

  • 新版IDEA中Git的使用(三)——回滚代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/887680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言:预编译过程的剖析

目录 一.预定义符号和#define定义常量 二.#define定义宏 三.宏和函数的对比 四、#和##运算符 五、条件编译 在之前,我们已经介绍了.c文件在运行的过程图解,大的方面要经过两个方面。 一、翻译环境 1.预处理(预编译) 2.编译 3…

广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞

漏洞描述 广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑,提供一百余款基于“端云大数据”产品/服务,提供产业大数据、产业新金融等增值服务的数字建筑平台服务商。广联达OA存在信息泄露漏洞,由于某些接口没有鉴权&#xff0c…

干货:京东云GPU服务器性能NVIDIA A30/A10/V100/P40测评

京东云GPU服务器性能如何?京东云GPU云主机提供NVIDIA A30、A10、V100、P40等多款GPU卡,新推出的8卡A30规格,配备24G显存,支持NVLink,更好为深度学习的推理与训练、高性能计算应用提供GPU算力,京东云服务器网…

新个性化时尚解决方案!Prompt2Fashion:自动生成多风格、类型时尚图像数据集。

今天给大家介绍一种自动化生成时尚图像数据的方法Prompt2Fashion。 首先创建了一组描述,比如“适合婚礼的休闲风格服装”,然后用这些描述来指导计算机生成图像。具体来说,他们使用了大型语言模型来写出这些服装的描述,接着将这些描…

JavaSE——面向对象10:抽象类、接口

目录 一、抽象类 (一)抽象类的引出 (二)抽象类基本介绍 (三)注意事项和使用细节 (四)抽象类的最佳实践——模板设计模式 二、接口 (一)接口快速入门 (二)基本介绍 (三)注意事项与使用细节 (四)接口VS继承 (五)接口的多态性 1.多态参数 2.多态数组 3.接口存在多态…

文件上传之%00截断(00截断)以及pikachu靶场

pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断, 第13关0x00截断 差不多了,今天先学文件上传白名单,在网上看了资料,差不多看懂了,但是还有几个地方需要实验一下&#…

高性能架构—存储高性能

1 📊关系型数据库 存储技术飞速发展,关系型数据的ACID特性以及强大的SQL查询让其成为各种业务系统的关键和核心存储系统。 很多场景下的高性能设计最核心的就是关系型数据库的设计,很多数据库厂商再优化和提升单个数据库服务器的性能方面做了…

统一 SASE 架构中的网络和安全融合

网络威胁情报技术的进步 传统的网络边界一片混乱,剩下的只是无人管理的设备、分散在私有云和公共云中的资产、无法读取的应用程序流量泛滥,混合工作结构正在给现有网络的功能带来压力。 更重要的是,这些问题早在生成式人工智能和大型语言模…

【C++11】新特性

前言: C11 是C编程语言的一个重要版本,于2011年发布。它带来了数量可观的变化,包含约 140 个新特性,以及对 C03 标准中约600个缺陷的修正,更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化&#xff0…

智能手表(Smart Watch)项目

文章目录 前言一、智能手表(Smart Watch)简介二、系统组成三、软件框架四、IAP_F411 App4.1 MDK工程结构4.2 设计思路 五、Smart Watch App5.1 MDK工程结构5.2 片上外设5.3 板载驱动BSP5.4 硬件访问机制-HWDataAccess5.4.1 LVGL仿真和MDK工程的互相移植5…

免费版U盘数据恢复软件大揭秘,拯救你的重要数据

我们的生活和工作越来越离不开各种存储设备,其中优盘因其小巧便携、方便使用的特点,成为了我们存储和传输数据的重要工具之一。为了防止你像我一样会遇到数据丢失抓狂的情况,我分享几款u盘数据恢复软件免费版工具来即时补救。 1.福昕U盘数据…

Oracle中TRUNC()函数详解

文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中,TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本,根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…

鸿蒙harmonyos next flutter混合开发之开发plugin(获取操作系统版本号)

创建Plugin为my_plugin flutter create --org com.example --templateplugin --platformsandroid,ios,ohos my_plugin 创建Application为my_application flutter create --org com.example my_application flutter_application引用flutter_plugin,在pubspec.yam…

一键生成PPT的AI工具-Kimi!

一键生成PPT的AI工具-Kimi! 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 😀大家好!我是向阳🌞,一个想成为优秀全栈开发工程师的有志青年! 📔今天不来讨论前后…

Jenkins Pipline流水线

提到 CI 工具,首先想到的就是“CI 界”的大佬--]enkjns,虽然在云原生爆发的年代,蹦出来了很多云原生的 CI 工具,但是都不足以撼动 Jenkins 的地位。在企业中对于持续集成、持续部署的需求非常多,并且也会经常有-些比较复杂的需求,此时新生的 CI 工具不足以支撑这些很…

前缀和算法详解

对于查询区间和的问题,可以预处理出来一个前缀和数组 dp,数组中存储的是从下标 0 的位置到当前位置的区间和,这样只需要通过前缀和数组就可以快速的求出指定区间的和了,例如求 l ~ r 区间的和,就可以之间使用 dp[l - 1…

鸿蒙OpenHarmony

开源鸿蒙系统编译指南 Ubuntu编译环境配置第一步:Shell 改 Bash第二步:安装Git和安装pip3工具第三步:远程仓配置第四步:拉取代码第五步:安装编译环境第六步:本地编译源码 Windows开发环境配置第一步&#x…

巧用armbian定时任务控制开发板LED的亮灭

新买了个瑞莎 3E 开发板,号称最小SBC,到了之后简直玩开了花,各种折腾后 安装好armbian系统,各种调优。 不太满意的地方:由于板子太小的原因,导致两个USBTYPEC的接口距离很近,所以买的OTG转接口如果有点宽的话 会显得特别拥挤。 还有就是每天晚上天黑了之后,卧室…

Uniapp API

1.uni.showToast 显示消息提示框 unishowToast({ obj参数 }) 2.uni.showLoading 显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。 3.uni.showModal 显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个A…