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登录页面…

Dev-c++的资本道路

Dev-c是美国发明的&#xff0c;c原来是编写软件的东西。可是&#xff0c;正所谓一方水土养一方人&#xff0c;美国是一个发达的资本主义国家&#xff1b;所以&#xff0c;一些投靠资本的&#xff0c;高层的美国人&#xff0c;用c赚取了许多利益。底层的人在用&#xff0c;高层的…

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

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

机器学习中的时卷积神经网络

时卷积神经网络(Temporal Convolutional Network, TCN)是一种特殊的卷积神经网络架构,它主要用于处理时间序列数据。与传统的卷积神经网络(Convolutional Neural Network, CNN)相比,TCN有以下几个主要特点: 1. 因果性(Causality): - 传统的CNN在特定位置的输出取决于当前及…

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

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

数字识别技术

数字识别技术是一种在人工智能和计算机视觉领域广泛应用的技术&#xff0c;旨在从图像中识别出数字&#xff0c;并将其正确地分类为0到9之间的一个数字。以下是对数字识别技术的详细介绍&#xff1a; 一、数字识别技术的定义与应用 数字识别技术是一种计算机视觉任务&#xf…

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…

虚拟化技术[4]之桌面虚拟化

桌面虚拟化 桌面虚拟化技术现状&#xff1a;桌面虚拟化技术问题案例分析&#xff1a;VMware View 桌面虚拟化 每个桌面镜像是一个带有应用程序的操作系统&#xff0c;终端用户通过一个虚拟显示协议来访问桌面系统。目的是使用户的使用体验同使用桌面上的PC一样。 桌面虚拟化是一…

基于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…

代码随想录算法训练营Day50 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、股票问题总结 | Python | 个人记录向

本文目录 309.最佳买卖股票时机含冷冻期做题看文章 714.买卖股票的最佳时机含手续费做题看文章 股票问题总结以往忽略的知识点小结个人体会 309.最佳买卖股票时机含冷冻期 代码随想录&#xff1a;309.最佳买卖股票时机含冷冻期 Leetcode&#xff1a;309.最佳买卖股票时机含冷冻…

QAnything 1.4.1 中的文档解析

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

不同版本的Servlet包

jakarta.servlet 是Servlet API的新标准 javax.servlet是旧标准。 程序报错可能是因为导包导错了。 参考链接&#xff1a; 详细描述

ISCC 2024|Misc

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

【Java框架】Spring-AOP官方文档人肉翻译

1. 首先提到了AOP和OOP。 OOP&#xff08;面向对象编程&#xff09;&#xff1a; 定义&#xff1a;面向对象编程是一种编程范式&#xff0c;通过类和对象来组织代码。它强调将数据和操作数据的函数封装在一起&#xff0c;并通过对象实例化这些类。关键概念&#xff1a; 类&am…

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…

环形天线简介

环形天线&#xff0c;这是一种独特而重要的无线电天线&#xff0c;其结构呈环形或圆环状。它在无线通信和雷达系统中扮演着重要的角色&#xff0c;得益于其独特的设计和工作原理&#xff0c;环形天线在各个领域都有着广泛的应用。本文将深入介绍环形天线的原理、工作方式以及其…

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

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