教你IDEA解决GIT冲突

前言

GIT基本上贯穿我们的开发生涯,之所以要使用git也是有很多优点的
🌹🌹🌹🌹🌹🌹🌹🌹

1.通俗易懂点,保存代码不丢失:防止因内存,操作等因素导致代码丢失

🌹🌹🌹🌹🌹🌹🌹🌹

2.易于版本控制:Git可以帮助你跟踪代码的变化,记录每个版本的变化和差异,方便回退到之前的版本或者查看代码的演进历史

🌹🌹🌹🌹🌹🌹🌹🌹

  1. 能够多人协作:Git支持多人同时对同一个代码库进行协作开发,可以方便地合并不同人的修改或者解决代码冲突。

以及其他方面等等优势,那么这篇文章我重点教大家如何解决GIT冲突

🎈🎈🎈✨✨✨🎈🎈🎈✨✨✨

为什么冲突

GIT冲突大致可以分为三类

  • 🎉并行开发

当多个开发者在不同分支上同时修改同一个文件时,如果合并这些分支时存在对同一部分的修改,就会导致冲突。

  • 合并分支

当你尝试将一个分支合并到另一个分支时,如果这两个分支都修改了同一个文件的相同部分,Git 无法自动确定应该采用哪个版本的修改,就会产生冲突。

  • 修改历史

如果在 Git 历史中的不同提交中对同一文件相同部分进行了修改,当你试图合并这些修改时,Git 无法确定应该如何组合它们,因此会导致冲突。

那么我们可以很显而易见的知道,造成GIT冲突的最直接的原因为:通过不同的途径同一个文件的相同地方进行修改了,就会造成GIT冲突

GIT解决冲突

在讲解IDEA进行解决GIT冲突前,先来讲解以下通用的GIT解决冲突的步骤和方式
🧡💛💙💖💝🧡💛💙💚💜🤎🖤🤍💝
以下举例给大家讲解如何解决冲突

步骤

假定有A分支B分支.我们需要将A分支的代码合并B分支代码,且修改相同文件的相同代码块,会有git冲突

首先先使用指令确定当前是否为A分支

git branch

如果当前分支不是 A分支,可以切换到 A分支分支。使用以下命令切换分支:

git checkout A分支

确保当前分支是最新的,可以使用以下命令拉取最新代码

git pull origin A分支

需要注意的是:要合并代码一定要为最新代码

切换到要合并的分支,也就是B分支

git checkout B分支

A分支合并B分支

git merge A分支

因为我们假定一定会出现冲突,因此接下来是解决冲突的步骤🚗

这个时候,GIT会标记我们冲突的代码,假如打开我们的冲突的文件,你会在该文件看到如下示例:

<<<<<<< HEAD
这部分是当前分支的修改
=======
这部分是合并分支的修改
>>>>>>> branch-name

查看冲突部分,并理解每个版本的修改。<<<<<<< HEAD 到 ======= 是当前分支的修改,======= 到 >>>>>>>branch-name 是合并分支的修改。

🌼🌷🌻🥀☘🌱🌺🌲

然后,手动编辑文件,选择你希望保留的修改或者组合修改。你可以删除 <<<<<<< HEAD 到 ======= 之间的内容,或者删除 ======= 到 >>>>>>> branch-name 之间的内容。

这一步,是为了留下你想留下的代码,将代码更新最新

假定冲突文件名为:myfile.txt,使用如下指令提交解决冲突后的代码

git add myfile.txt
git commit

使用 git add < file> 命令将解决冲突后的文件标记为已解决
运行git commit命令提交解决冲突的版本。

最后,使用推送指令,将代码推送到远端

git push origin B分支

有可能在你解决完冲突的过程中其他人有新的代码已经推送到远端,因此在推送远端前建议先拉取最新代码,如果很确定不会出现这种情况可不做

以上大功告成,可喜可贺
🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹


IDEA解决冲突

接下来,我将使用一个实例来给大家讲解如何使用idea来更方便的解决冲突

在开始之前,请确保你的电脑安装并配置好了GIT工具,具体百度操作即可

步骤

首先,我先建立了一个git仓库,并基于master主分支,新建了两个分支,分别为A分支B分支
以下截图,为了后续演示方便我两个分支名称就叫A分支B分支

克隆并打开项目,分别修改A和B分支

以下为讲解A分支 合并B分支的解决冲突的做法,我们·修改·文件README.md文件

在这里插入图片描述
在这里插入图片描述


💛💚💙💚🧡💛💙💜💙💛🧡

从远端克隆下项目

git clone git地址

然后用IDEA打开项目,在右下角可以看到分支

在这里插入图片描述

初始我们什么都不做的情况下,A分支B分支的文件内容是一样的

以修改README.md文件为例,初始内容为:

# search_markdown_data

#### 介绍
用于检索markdown的数据来源

#### 软件架构
软件架构说明


#### 安装教程

1.  xxxx
2.  xxxx
3.  xxxx

#### 使用说明

1.  xxxx
2.  xxxx
3.  xxxx

#### 参与贡献

1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request


#### 特技

1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

首先点击右下角先切换B分支

选择分支->CheckOut

在这里插入图片描述

修改B分支的README.md内容如下:

# search_markdown_data

#### 介绍
用于检索markdown的数据来源


#### 安装教程

1.  xxxx 测试修改相同的地方B分支
2.  xxxx
3.  xxxx

#### 使用说明

1.  xxxx
2.  xxxx
3.  xxxx

#### 参与贡献

1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request


#### 特技

1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)


修改内容
安装教程的第一条为1. xxxx 测试修改相同的地方B分支
以及删除软件架构和软件架构说明字样

然后提交和推送远端

在这里插入图片描述


🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼🌼

切换A分支,并修改README.md内容为如下:

# search_markdown_data

#### 介绍
用于检索markdown的数据来源

#### 软件架构
软件架构说明


#### 安装教程

1.  xxxx测试修改相同的地方A分支
2.  xxxx
3.  xxxx

#### 使用说明

1.  xxxx
2.  xxxx
3.  xxxx
4. A分支新增
#### 参与贡献

1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request


#### 特技

1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)


修改内容
安装教程的第一条为1. xxxx 测试修改相同的地方A分支
以及新增4. A分支新增

提交并推送A分支到远端

A分支合并B分支

先切换到B分支

在这里插入图片描述

在A分支的选项中选择merge into current,意思为把A分支合并到当前切换的分支

在这里插入图片描述
此时会进行弹窗

在这里插入图片描述

左边为冲突的文件,右边有三个选项,
🌼Accept Yours:接受当前分支变更
🌸Accept Theirs: 接受别人的分支的变更
🌻Merge...: 将两个分支的变更一起查看选择变更

这个根据实际选择不同进行解决冲突,一般情况选择第三个

点击merge出现如下界面出现了三分界面:
在这里插入图片描述

🧡左边屏幕为:当前分支的代码变更
💛右边屏幕为:其他分支的代码变更
💙中间屏幕为:解决冲突之后最终的代码结果

截取左上角的界面

在这里插入图片描述
它有如下操作:

🌸上下箭头: 切换你要解决冲突的代码块,有的时候解决冲突的代码可能比较长,两处改动的代码块间隔比较多行,可以使用该操作
🌼Left,All,Right: 点击Lfet,代表把左边的冲突代码块合到中间,Right是把右边的冲突代码合到中间,All是把两边的冲突代码合并到中间.需要注意的是,该操作只能把冲突文件中的不是修改相同的地方的代码进行合并

截取解决冲突的操作界面:

在这里插入图片描述

💛X按钮:代表不将变动合并到最终的结果
💙`》按钮:代表将分支的变动合并到最终解决之后采用的变更

此外还需要注意的是,它一般有三种变更:

在这里插入图片描述

🌻灰色冲突代码块:代表的是删除的代码块
🌷红色冲突代码块:代表的是双方改到相同的地方的代码块,一般情况真实项目中以对同一个功能需要添加两个不同功能居多
🌲蓝色冲突代码块:代表新增的代码块

灰色和蓝色的冲突块都好解决,直接点击All就行,如下为点击All最终执行的结果

在这里插入图片描述

只留下修改相同的代码,至于需要执行什么操作,留下哪个分支的代码,或者两个分支的代码都要,在真实项目中,需要与其他开发者协商

那么这边,我两边的代码块都保留,也就是点击两边的》按钮:

当所有冲突解决完成之后,会提示:

All changes have bean proccessed. Save Changes and finish merging

的字样,就可以点击Apply,采用变更了,提一句,Abort按钮操作是取消合并

在这里插入图片描述
然后提交并推送远端,我们的冲突就解决了
大功告成,可喜可贺,撒花~

🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

结语

以上就是GIT解决冲突的过程啦,这篇文章就到这里

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

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

相关文章

pulseaudio是如何测试出音频延迟的

通常专业的音频设备生产厂商都有专业的设备来测试精确的音频链路延时。 那么没有专业设备怎么测试出音频延迟呢?如下图,我们可以看到pulseaudio可以测试出硬件音频延迟。 那么,他是怎么测试出硬件延迟的呢?他的理论依据是什么呢?接下来我带大伙一起探索一下。 /*占位…

一篇文章让你入门python集合和字典

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、集合: 增加 add 删除 del 删除集合 discard(常用)删除集合中的元素 &#xff0c;删除一个不存在的元素不会报错 remove 删除一个不存在的元素会报错 pop随…

Spine深入学习 —— 数据

atlas数据的处理 作用 图集&#xff0c;描述了spine使用的图片信息。 结构 page 页块 页块包含了页图像名称, 以及加载和渲染图像的相关信息。 page1.pngsize: 640, 480format: RGBA8888filter: Linear, Linearrepeat: nonepma: truename: 首行为该页中的图像名称. 图片位…

【点云surface】Poisson表面重建

1 介绍 Poisson表面重建算法是一种用于从点云数据生成平滑曲面模型的算法。它基于Michael Kazhdan等人在2006年发表的论文《Poisson surface reconstruction》。该算法通过将点云数据转换为体素表示&#xff0c;并利用Poisson方程来重建曲面。 该算法的基本原理是将点云数据转…

python教程:正常shell与反弹shell

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接 反弹shell,攻击端是服务端,被攻击端是客户端 正常shell,攻击端是客户端,被攻击端是服务端 反弹shell,先启用服务端,再启用客户端 反弹shell的好处…

2022年09月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 运行下列程序后,结果为120的是? A: B: C: D: 答案:C 本题考察阶乘知识,12345的结果为120. <

【Python自学】七个超强学习网站,你值得拥有!

学习Python最主要的还是要动手&#xff0c;去找一些自己感兴趣的脚本&#xff0c;代码去练习&#xff0c;练的越多&#xff0c;对于一些英语单词&#xff0c;特殊符号要比死记硬背要容易记得些。 以下这些网站&#xff0c;虽说不上全方位的满足你的需求&#xff0c;但是大部分也…

基于springboot实现高校食堂移动预约点餐系统【项目源码】

基于springboot实现高校食堂移动预约点餐系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…

城市NOA加速落地,景联文科技高质量数据标注助力感知系统升级

当前&#xff0c;自动驾驶技术的演进正在经历着从基础L2到L3过渡的重要阶段&#xff0c;其中NOA&#xff08;自动辅助导航驾驶&#xff09;扮演着至关重要的角色。城市NOA&#xff08;L2.9&#xff09;作为城市场景下的NOA&#xff0c;被看作是车企向更高阶自动驾驶迈进的必经之…

汽车业务增长乏力!又被法雷奥告上法庭,英伟达有点「难」

随着智能汽车进入「降本增效」的关键周期&#xff0c;对于上游产业链&#xff0c;尤其是芯片的影响也在持续发酵。 本周&#xff0c;英伟达发布截至2023年10月29日的第三季度财报数据&#xff0c;整体业务收入为181.2亿美元&#xff0c;比去年同期增长206%&#xff0c;比上一季…

OSG粒子系统与阴影-爆炸模拟(3)

爆炸模拟示例 爆炸模拟示例的代码如程序清单11-4 所示&#xff1a; /* 爆炸模拟示例 */ void explosion_11_4() {osg::ref_ptr<osgViewer::Viewer> viewer new osgViewer::Viewer();osg::ref_ptr<osg::GraphicsContext::Traits> traits new osg::GraphicsContex…

基于袋獾算法优化概率神经网络PNN的分类预测 - 附代码

基于袋獾算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于袋獾算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于袋獾优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

C语言,通过数组实现循环队列

实现循环队列最难的地方就在于如何判空和判满&#xff0c;只要解决了这两点循环队列的设计就没有问题。接下来我们将会使用数组来实现循环队列。 接下来&#xff0c;为了模拟实现一个容量为4的循环队列&#xff0c;我们创建一个容量为4 1 的数组。 接下来我们将会对这个数组…

Kafka系列 - Kafka一篇入门

Kafka是一个分布式流式处理平台。很多分布式处理系统&#xff0c;例如Spark&#xff0c;Flink等都支持与Kafka集成。 Kafka使用场景 消息系统&#xff1a;Kafka实现了消息顺序性保证和回溯消费。存储系统&#xff1a;Kafka把消息持久化到磁盘&#xff0c;相比于其他基于内存的…

x86 汇编语言介绍001

1&#xff0c;搭建编程环境 1.1 NASM 基本信息 示例使用的汇编器为 nasm 主页&#xff1a; https://www.nasm.us/https://www.nasm.us/ 下载最新的稳定版源代码 wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.gz 1.2解压并编译安装 tar zx…

89. 打家劫舍【动态规划】

题目 题解 class Solution:def rob(self, nums: List[int]) -> int:N len(nums)# 定义状态: dp[i]表示从第i间房子开始抢劫&#xff0c;最多能抢到的金额dp [0 for i in range(N)]for i in range(N-1, -1, -1):if i N-1:dp[i] nums[i]elif i N-2:dp[i] max(nums[i], …

案例-某验四代滑块反爬逆向研究一

系列文章目录 第一部分 案例-某验四代滑块反爬逆向研究一 文章目录 系列文章目录前言一、分析流程二、定位 w 值生成位置三、device_id 值的定位生成四、pow_msg 值 和 pow_sign 值的生成总结 前言 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff…

训练日志——wandb

目录 安装与登录基础使用与可视化常用函数wandb.init()wandb.config()wandb.log()wandb.finish()wandb.watch() 参考 安装与登录 安装 pip install wandb注册并登录 https://wandb.ai/site客户端登陆 在终端中输入wandb login 然后出现You can find you API key的一串网站&am…

Mysql数据库 20.DCL数据控制语言

因这类SQL语言开发人员操作较少&#xff0c;主要是数据库管理员&#xff08;DBA&#xff09;使用&#xff0c;所以前文没有提及&#xff0c;这篇文章进行补充说明 DCL数据控制语言 用来管理数据库用户&#xff0c;控制数据库的访问权限 1.管理用户 1.1 查询用户 select * f…

软件测试 | MySQL 非空约束详解

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…
最新文章