教你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.mzph.cn/news/169243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串函数

读取字符串的函数 1.gets()函数 说明&#xff1a;gets函数简单易用&#xff0c;它读取整行输入&#xff0c;直至遇到换行符&#xff0c;然后丢掉换行符&#xff0c;储存其余字符&#xff0c;并在末尾添加一个空字符使其成为一个C字符串。它经常和puts&#xff08;&#xff09;…

从零开始的RISC-V模拟器开发(一)环境搭建

前言 博主这系列文章是跟随中科院吴伟老师的b站公开课&#xff1a;[完结]从零开始的RISC-V模拟器开发第一季2021春季_哔哩哔哩_bilibili 记录的笔记。仅供学习使用&#xff0c;侵删&#xff01; 苦逼的博主现在自己毕设也是要设计类似的东西。哎。我需要做的是给一个现成的 R…

STM32 MAP文件

文章目录 1 生成Map2 map中概念3 文件分析流程3.1 Section Cross References3.2 Removing Unused input sections from the image&#xff08;移除未使用的段&#xff09;3.3 Memory Map of the image&#xff08;映像的内存分布&#xff09;3.3.1 加载域3.3.2 运行域 4 代码运…

机器学习探索计划——KNN算法流程的简易了解

文章目录 数据准备阶段KNN预测的过程1.计算新样本与已知样本点的距离2.按照举例排序3.确定k值4.距离最近的k个点投票 scikit-learn中的KNN算法 数据准备阶段 import matplotlib.pyplot as plt import numpy as np# 样本特征 data_X [[0.5, 2],[1.8, 3],[3.9, 1],[4.7, 4],[6.…

软件测试:超详细的Jmeter基础教程

JMeter 介绍&#xff1a; 一个非常优秀的开源的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分 Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1a; &#xff…

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

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

rancher2.6 docker版本部署

1. 拉取镜像 docker pull rancher/rancher:v2.6.5 注&#xff1a; 上面命令中rancher的版本v2.6.5&#xff0c;仅仅是我因为我们环境中使用的k8s都是 1.20.1 到1.23.6 之间的版本。rancher支持的k8s版本&#xff0c;在github上查看&#xff1a;Release Release v2.6.5 ranche…

2023 年 认证杯 小美赛 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 cs数模团队在认证杯 小美赛前为大家提供了许多资料的内容呀&am…

基于springboot实现乒乓球预约管理系统项目【项目源码】

基于springboot实现乒乓球预约管理系统演示 系统的开发环境 浏览器&#xff1a;IE 8.1&#xff08;推荐6.0以上&#xff09; 开发使用语言&#xff1a;JAVA JDK版本&#xff1a;JDK_8 数据库管理系统软件&#xff1a;Mysql 运行平台&#xff1a;Windows 7 运行环境&#…

破案现场:Docker容器资源限制导致的oom问题

破案现场&#xff1a;Docker容器资源限制导致的oom问题 01 事故现场02 问题定位03 对症下药04 后记 原文来自于微信公众号“运维之美” https://mp.weixin.qq.com/s?__bizMzA5NDY1MTM3MA&mid2247484902&idx1&sn8394aefd884ee09ea546fcd400dd233c&chksm904a136…

是否有无限提取的代理IP?作为技术你需要知道这些

最近有互联网行业的技术小伙伴问到&#xff0c;有没有可以无限提取的代理IP&#xff1f;就是比如我一秒钟提取几万、几十万次&#xff0c;或者很多台机器同时调用API提取链接&#xff0c;这样可以吗&#xff1f;看到这个问题&#xff0c;不禁沉思起来&#xff0c;其实理论上是存…

python基础教程:动态参数

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 Python的动态参数有两种&#xff0c;分别是*args和**kwargs&#xff0c; 这里面的关键是一个和两个星号的区别&#xff0c;而不是args和kwargs在名字上的区别&#…

js粒子效果(二)

效果: 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Particle Animation</title><…

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

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

【点云surface】Poisson表面重建

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

训练日志——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…

【MinIO】几个有用的方法

在windows总安装Minio 进入网址 在Windows安装时&#xff0c;选择相应的exe文件下载&#xff0c;下载到本地后&#xff0c;使用如下的命令即可在前台启动&#xff1a; minio.exe server D:\your_path 或者将该路径写进环境变量的path中&#xff0c;用来为minio指定数据存储…

【Java程序员面试专栏 专业技能篇】Java SE核心面试指引(三):核心机制策略

关于Java SE部分的核心知识进行一网打尽,包括四部分:基础知识考察、面向对象思想、核心机制策略、Java新特性,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第三部分:核心机制策略,子节点表示追问或同级提问 异常处理 …

想当老师应该去学什么专业

专业选择是决定未来职业发展的重要步骤&#xff0c;如果你也想成为一名老师&#xff0c;那么这五个专业可能会适合你&#xff01; 教育学专业 教育学专业是培养教育理论和方法的学科&#xff0c;这些理论知识将帮助你理解教学过程、学生发展、课程设计和评估。该专业将让你全面…

【沐风老师】在3dMax中如何把对象随机散布在表面上?

在3dMax中如何把对象随机散布在表面上&#xff1f; 在这个教程中&#xff0c;给大家讲解在3dMax中如何把对象随机散布到另一个对象的表面上。有不少3dMax的初学者在将对象分布在随机表面上时感到手足无措。如果&#xff0c;将每个对象手动放置在表面上并花时间调整每个对象根本…