Git 仓库中 -- 代码冲突产生、定位、解决的流程

目录

  • 前置知识
  • 1 工具环境
  • 2 冲突的产生
    • 2.1 仓库中的源代码
    • 2.2 人员 A 首先更改代码
    • 2.3 人员 B 更改代码,产生冲突
      • 2.3.1 第一次错误提示:
      • 2.3.2 第二次错误提示:
  • 3 查看冲突
  • 4 手动解决冲突
    • 4.1 方式一
    • 4.2 方式二(tortoisegit)
  • 5 合并冲突后重新commit
  • 6 合并冲突后重新 push

前置知识

远程仓库: 是指存储在远程服务器上的Git仓库,如 github、gitee 中创建的仓库
本地仓库: 是指存储在开发者本地计算机上的Git仓库。开发者可以在本地仓库中进行代码修改,而这些变更只影响到本地仓库。开发者可以将本地仓库中的代码推送(Push)到远程仓库,也可以从远程仓库拉取(Pull)最新的代码到本地仓库。

1 工具环境

git + tortoisegit

2 冲突的产生

举例说明,在当前分支上,有一段代码是这样的

<h2>金融领域情感分析系统</h2>

人员 A 开始开发,将代码修改为如下

<h2>金融领域情感分析系统,第一次更改</h2>

并且将代码 push 到远程仓库

但是在 A 将代码 push 之前,人员 B 就开始开发,将代码修改为如下

<h2>金融领域情感分析系统,第二次更改</h2>

A 人员 push 代码后,B 才开发完,准备提交代码,但由于 A B 都修改了同一行代码,就造成了代码冲突,无法 push 上去

下面 DEMO 记录了冲突产生、寻找、解决的完整流程

2.1 仓库中的源代码

源代码如下:
在这里插入图片描述
目前有两个人员 A、B 进行开发任务,基于当前代码 clone 到本地

2.2 人员 A 首先更改代码

A 将代码进行修改,并 push 代码至远程仓库
在这里插入图片描述

2.3 人员 B 更改代码,产生冲突

B 人员原本代码如下

在这里插入图片描述
为了模拟代码冲突,修改代码如下

在这里插入图片描述

然后 B 执行 commit,commit 是不会有错误的,如下图

在这里插入图片描述

commit 成功后,进行 push 操作,到这一步就会提示 error,如下图

2.3.1 第一次错误提示:

在这里插入图片描述

上图的的红色error,表明:这是由于远程库与本地库代码不一致造成的说通俗点,就是远程仓库存在一些新代码,你没有拉取 (pull),根据下面的提示也可以知道,我们需要进行 git pull 操作
接下来执行 git pull 命令, git pull 会拉取远程仓库的代码至本地,进行代码合并

2.3.2 第二次错误提示:

如下图,我执行了 git pull,希望将远程仓库的代码拉取同步,一般情况下,远程仓库的代码会自动合并到我的本地,但是!由于 A B 人员修改过同一行代码,必然会造成冲突,。git pull会提示错误:CONFLICT (冲突)
在这里插入图片描述
图中有两处信息提示值得我们注意:

  • 1 提示:CONFLICT (content): Merge conflict in src/components/myHeader.vue,表示该文件存在冲突
  • 2 提示:Automatic merge failed; fix conflicts and then commit the result.,表示需要我们自己手动解决冲突,然后再次进行 commit

说通俗点,就是由于 A B 人员修改过同一行代码,必然会造成冲突,需要我们自己手动解决冲突,也就是,我们手动对代码进行合并,将冲突的代码合并起来,再重新进行 commit push

3 查看冲突

下面我们来看看是哪些具体代码产生了冲突
此时我们打开文件夹,可以看到有冲突的文件会携带一个 黄色的警告标识
在这里插入图片描述
我们使用 VScode 打开,可以看到当前代码会使用如下符号,将代码分隔开

<<<<<<<<<HEAD
代码
==========
代码
>>>>>>>>>>

如下图所示:

在这里插入图片描述

这些 <<<<< >>>>> 符号表示什么意思?我将这里分为三个重要的部分

  • 1 黄色区域:为我们提供了一些快捷的解决冲突方式
    • 采用当前更改:代码会抛弃人员 A 的更改,仅保留人员 B 的更改,一般不会使用
    • 采用传入的更改:代码会抛弃人员 B 的更改,仅保留人员 A 的更改,一般不会使用
    • 保留双方更改:A 和 B 的更改都会被保留下来,一般不会使用
    • 比较变更:会打开一个界面,我们可以更清晰的看到代码变更
  • 2 红色区域:这里是人员 B 修改的代码,即本次提交作者改的代码
  • 3 绿色区域:这里是人员 A 修改的代码,即上一次提交作者改的代码

到此,我们就知道了哪里的代码产生了冲突

4 手动解决冲突

接下来,我们要手动,将冲突的代码合并起来

4.1 方式一

方式一是使用编辑器 vscode 进行修改,打开编辑器,如下图

在这里插入图片描述

上一节中,已经解释了 <<<<< 和 >>>>>> 分隔代码的含义
假设我们目前希望,A B的代码都保留,即保留所有文案:“第一次更改”和“第二次更改”和“”按钮,我们只需要在编辑器中,将代码合并为我们希望的样子,并删除多余的内容,如下图所示
在这里插入图片描述
保存后,然后右键选择文件,点击 resolve,表示将冲突已经解决,文件的黄色警告就会消失
在这里插入图片描述
在这里插入图片描述

4.2 方式二(tortoisegit)

在这里插入图片描述

左上:人员 A 的修改
右上:人员 B 的修改
下面:我们需要手动处理合并,即我们希望怎么保留代码,将代码写在下面
其中,黄色表示该部分代码已被删除,我们要将保留的代码写在红色区域
在这里插入图片描述
如果我们希望,将人员A的修改,和人员B的修改都保留,那么可以在下面的区域,将文案“第一次更改”“第二个更改”都添加上,即代码会被合并为这样
在这里插入图片描述
保存关闭窗口,右键选择文件,点击 resolve,表示将冲突已经解决,文件的黄色警告就会消失
在这里插入图片描述

5 合并冲突后重新commit

到这里,我们已经将冲突合并
我们需要重新进行 commit 和 push操作

在这里插入图片描述
此时,message 上自动会有文案如下图
表示当前 commit 的代码合并了冲突

在这里插入图片描述
点击 commit ,会出现弹窗,点击 ignore

在这里插入图片描述

6 合并冲突后重新 push

执行 git push,代码提交成功
在这里插入图片描述
进入 github 仓库中,查看代码,是我们手动合并后的效果

在这里插入图片描述
到此代码冲突的问题就解决好了

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

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

相关文章

【Linux网络】端口及UDP协议

文章目录 1.再看四层2.端口号2.1引入linux端口号和进程pid的区别端口号是如何生成的传输层有了pid还设置端口号端口号划分 2.2问题2.3netstat 3.UDP协议3.0每学一个协议 都要讨论一下问题3.1UDP协议3.2谈udp/tcp实际上是在讨论什么&#xff1f; 1.再看四层 2.端口号 端口号(Po…

基于Android studio 使用SQLite数据库完成登录注册功能——保姆级教程

&#x1f345;文章末尾有获取完整项目源码方式&#x1f345; 点击快捷传送地址&#xff1a; 保姆级教学——制作登陆注册功能页面 目录 一、准备工作 二、创建相关文件 三、页面布局 四、DabaHelper帮助类的编写 五、RegisterActivity注册页面 六、LoginActivity登录页面…

代码随想录算法训练营第三十七天|435. 无重叠区间、763.划分字母区间、56. 合并区间、738.单调递增的数字、968.监控二叉树

435. 无重叠区间 文档讲解&#xff1a;代码随想录 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 本道题与上个题目相似&#xff0c;都是求重叠区间 统计重叠区间的个数&#xff0c;减去重叠区间的个数就是无重叠区间了 主要就是为了让区间尽可能的重叠。&a…

微信小程序源码-基于Java后端的会议发布与预约系统毕业设计(附源码+演示录像+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设…

Java的结构与运行机制

1. JDK JRE JVM三者的区别 JDK(Java Development Kit)&#xff1a;Java开发工具包 JDK包含JRE&#xff0c;还包括其他例如&#xff1a;编译器(javac)、javadoc、jar等&#xff0c;JDK是能够创建和编译程序的。 JRE(Java runtime environment)&#xff1a;Java运行环境 JRE是运…

手把手一起学习Python NumPy

NumPy 是用于处理数组的 python 库&#xff0c;NumPy 中的数组对象称为 ndarray&#xff0c;它提供了许多支持函数&#xff0c;使得利用 ndarray 非常容易。Numpy官方网址 NumPy 安装 使用pip安装NumPy 模块&#xff1a; pip install numpyNumPy 入门 创建numpy数组&#x…

基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好

以微博考研话题为例 思路步骤&#xff1a; 数据清洗&#xff1a; 使用pandas读取数据文件&#xff0c;并进行数据清洗和预处理&#xff0c;包括去除重复值、数据替换等。 数据处理实现&#xff1a; 数据处理的过程如下&#xff1a; 数据清洗主要包括去重和数据转换两个步骤…

Magisk + JustTrustMe 安装配置

操作步骤&#xff1a; 安装 Magisk 面具&#xff08;手机root&#xff09;在面具中刷入 LSPosed框架安装 JustTrustMe在LSPosed框架中配置并启动 JustTrustMe 一&#xff0c;Magisk面具 请根据自己手机的机型去root并安装面具&#xff0c;参考链接&#xff1a; https://www…

QAnything 1.4.1 中的文档解析

2024年初我们开源了QAnything&#xff0c;一个基于检索增强生成式应用&#xff08;RAG&#xff09;的本地知识库问答系统。对于本地知识库&#xff0c;QAnything支持多种格式的文档输入&#xff0c;允许用户上传包括PDF、图片、Word、PowerPoint、Excel、TXT&#xff0c;甚至音…

ISCC 2024|Misc

FunZip ISCC{xoMjL8NuYRRb} Number_is_the_key ISCC{Sanoyq6qGIPF} 精装四合一 四张图片尾部都存在多余数据&#xff0c;把多余数据分别提取出来保存成文件&#xff0c;未发现规律。根据提示&#xff0c;预计需要将四部分多余数据进行合并。提取四个部分前16个字节&#xff0…

Linux学习(十二)-- 用户管理与用户组管理、su与exit命令、sudo命令

目录 1. 用户管理 注&#xff1a; 以下命令需root用户执行 1.1 创建用户 1.2 删除用户 1.3 查看用户所属组 1.4 修改用户所属组 2.用户组管理 注&#xff1a; 以下命令需root用户执行 2.1 创建用户组 2.2 删除用户组 拓展&#xff1a; 3. su命令与exit命令 4. sudo…

Python高效数据分析的综合复习指南【时间处理与机器学习】

五、时间处理 一、时间戳-----Timestamp类型 方法1&#xff1a;使用Timestamp创建 pandas.Timestamp(ts_input, freqNone, tzNone, unitNone, yearNone, monthNone, dayNone, hourNone, minuteNone, secondNone, microsecondNone, tzinfoNone, offsetNone) import pandas a…

26计算机操作系统408考研-操作系统进程与线程篇章(三)

操作系统进程与线程篇章 ` 文章目录 操作系统进程与线程篇章前言一、进程概念进程控制块进程创建进程终止进程的阻塞和唤醒进程唤醒进程挂起和激活线程多线程线程实现与线程模型总结互斥和同步并发原理硬件同步信号量机制信号量的应用管程经典同步问题消息传递前言 一、进程概…

碌时刻必备!微信自动回复让你告别消息堆积

在忙碌的时候&#xff0c;我们往往会面临消息堆积如山的情况。无法及时回复消息不仅容易造成交流障碍&#xff0c;还可能错过重要的机会。 但是现在&#xff0c;有一个神奇的工具——个微管理系统&#xff0c;可以帮助我们轻松应对这个问题 &#xff0c;实现微信自动回复。 首…

Mujava 工具的简单使用

首先下载openjava.jar和mujava.jar&#xff0c;以及自己手写一个mujava.config指向存放mujava的目录&#xff0c;并将这些文件放在mujava目录下。此时&#xff0c;基本的mujava环境就搭建好了。 分别创建src&#xff08;存放源码文件&#xff09;、classes&#xff08;存放源码…

每日一题 求和

1.题目解析 求和_牛客题霸_牛客网 (nowcoder.com) 这一题&#xff0c;主要描述的就是求满足和为m的子序列&#xff0c;对与子序列的问题可以使用决策树。 2.思路分析 决策树如下图所示: 递归结束条件&#xff1a; 当当前和 sum 等于目标和 m 时&#xff0c;说明找到了一个满…

如何在华为手机上恢复已删除的视频[4种解决方案]

概括 在数字媒体时代&#xff0c;智能手机已成为我们的个人金库&#xff0c;存储以视频形式捕捉的珍贵记忆。然而&#xff0c;意外删除这些珍贵的文件可能会是一次令人心痛的经历。对于华为手机用户来说&#xff0c;由于删除或其他意外导致视频丢失尤其令人痛苦。但不用担心&a…

Python 拼图游戏

拼图游戏(puzzle)是一种常见的益智游戏&#xff0c;玩家通过拖动图块来正确拼接成完整的图片。 由一张原图&#xff0c;分割成图块&#xff0c;拼图块的大小将会根据行列数自动调整&#xff0c;然后随机打乱&#xff0c;玩家通过拖拽图块&#xff0c;最后复原原图。 &#x1f…

idea使用鼠标滚轮进行字体大小缩放

idea使用鼠标滚轮进行字体大小缩放 使用快捷键CtrlAltS进入到设置页面 在左上角搜索框输入“increase”&#xff0c;在左侧的Keymap中右击“Increase Fort Size”&#xff0c;点击“add mouse shortcut”&#xff0c;然后录入我们要设置的快捷键&#xff0c;比如我是点击ctrl鼠…

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…