【Git 入门教程】第四节、Git冲突:如何解决版本控制的矛盾
Git是目前最流行的版本控制系统之一,它为团队协作开发提供了方便和高效的方式。然而,在多人同时修改同一个文件时,可能会出现代码冲突(conflict),导致代码无法正确合并。那么,如何解决Git冲突呢?
一、什么是Git冲突?
在多分支并行处理时,每一个分支可能是基于不同版本的主干分支创建的。如果每隔分支都独立运行而不进行合并,就没有问题,但是如果在后续操作过程中进行合并的话,就有可能产生冲突。比如B1, B2的两个分支都是基于master分支创建出来的。B1分支如果和B2分支修改了同一份文件的话,那么在合并时,以哪一个文件为准呢,这就是所谓的冲突。

当Git无法自动合并冲突时,会提示用户手动解决冲突。这时,需要打开被冲突的文件,手动找到冲突的部分,根据实际情况进行修改和调整,最后再提交代码。
二、为什么会出现Git冲突?
Git冲突通常是由以下几种原因造成的:
- 多个人同时修改同一个文件
- 不同的人对同一个文件的同一个位置进行了修改
- 两个或多个改动互相矛盾
在Git中,每个人都可以在本地修改代码,并将这些修改推送到远程仓库。如果多个人同时修改同一个文件,就有可能出现冲突。当Git尝试合并这些代码时,会发现存在矛盾的情况,因此需要手动解决。
三、Git冲突演示
1.先将主干分支的所有文件清空掉

2.主干分支添加文件test.txt,文件内容为空

3.基于主干分支,创建两个分支B1, B2

4.切换到分支-B1
修改test.txt文件内容并提交:


5.切换分支-B2

切换到B2分支,查看文件内容


修改test.txt文件内容并提交

6.合并分支-B1

切换到master主干分支,此时test.txt文件内容为空
将B1分支合并到主干分支中

7.合并分支-B2

因为B2分支也对文件进行了修改,所以如果此时合并B2分支,就会提示冲突

查看文件内容差异

xu**@xu** MINGW64 /e/Study/git/MyChatGPT (master|MERGING)
$ git diff
diff --cc test.txt
index 611d987,44ff0ef..0000000
--- a/test.txt
+++ b/test.txt
@@@ -1,1 -1,1 +1,5 @@@
- b1-b2
++<<<<<<< HEAD
++b1
++=======
++b2
++>>>>>>> b2
diff --git a/README.md b/README.md
deleted file mode 100644
index b38ba8c..0000000
--- a/README.md
+++ /dev/null
@@ -1 +0,0 @@
-MyChatGPT
\ No newline at end of file
diff --git a/b1.txt b/b1.txt
deleted file mode 100644
index 611d987..0000000

这里的冲突,软件是无法判断该如何出来处理的,所以需要人工进行判断,将冲突的文件内容进行修正。

重新提交到master主干分支中。

查看操作日志

三、如何避免Git冲突?
虽然Git冲突是难免的,但我们可以通过一些措施尽量减少冲突的发生。
1. 频繁地提交代码
频繁地提交代码可以减少多个人同时修改同一个文件的概率。每次提交代码时,都要尽量确保自己所做的修改不会与其他人产生冲突。
2. 使用分支开发
使用Git分支进行开发可以有效地减少Git冲突的发生。团队成员可以在自己的分支上进行开发,避免互相之间的干扰。
3. 坚持代码规范
坚持代码规范可以减少不同人对同一个文件的同一个位置进行了修改的概率。如果所有人都遵循同样的代码规范,就可以使得代码变得更加一致,减少冲突的可能性。
4. 尽早发现冲突
尽早发现Git冲突可以避免冲突的影响扩散到整个项目中。如果能够在冲突出现后立即解决,就可以减小冲突带来的损失。
总结
Git冲突是多人协作开发中常见的问题,但通过合适的措施和方法,我们可以有效地解决它们。需要注意的是,虽然我们可以通过手动解决冲突来解决问题,但尽量避免冲突的发生才是最好的方法。因此,在日常的开发工作中,我们应该尽可能地遵循代码规范,使用Git分支进行开发,以及频繁地提交代码,尽量减少冲突的发生。
相关文章:
【Git 入门教程】第四节、Git冲突:如何解决版本控制的矛盾
Git是目前最流行的版本控制系统之一,它为团队协作开发提供了方便和高效的方式。然而,在多人同时修改同一个文件时,可能会出现代码冲突(conflict),导致代码无法正确合并。那么,如何解决Git冲突呢…...
c++验证用户输入合法性的示例代码
c验证用户输入合法性的示例代码 本文介绍c验证用户输入合法性,用于检测限定用户输入值。包括:1、限定用户输入为整数(正负整数);2、限定用户输入为正整数;3、限定用户输入为正数(可以含有小数&…...
ctfshow web入门phpcve web311-315
1.web311 通过抓包发现php版本时为PHP/7.1.33dev 漏洞cve2019-11043 远程代码执行漏洞 利用条件: nginx配置了fastcgi_split_path_info 受影响系统: PHP 5.6-7.x,Nginx>0.7.31 下载工具进行利用 需要安装go环境 yum install golang -y …...
gpt.4.0-gpt 国内版
gpt 使用 GPT(Generative Pre-trained Transformer)是一种预训练的语言模型,可用于多种自然语言处理任务,如情感分析、文本分类、文本生成等。下面是使用GPT的一些步骤和建议: 确定任务和数据集:首先&…...
放弃手动测试,快来了解JMeter压测神器的安装和使用吧~~
目录:导读 引言 jmeter的安装 JMeter是干什么的 JMeter都可以做那些测试 JMeter的使用和组件介绍 下面我们进行XML格式的实战练习 jmeter与postman的区别 JSON的插件 另附视频教程资源 引言 你是否曾经为手动测试而苦恼?是不是觉得手动测试太费…...
SQL函数
文章目录 一、SQL 函数二、SQL COUNT() 函数三、SQL FIRST() 函数四、SQL LAST() 函数五、SQL MAX() 函数总结 一、SQL 函数 SQL 拥有很多可用于计数和计算的内建函数。 SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。 有用的 Aggre…...
苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像
苦熬10余年,国产操作系统自主研发 说到国内自主研发的操作系统,经验最丰富的品牌,当然是麒麟OS. 从诞生到发展,历经10多年的努力,麒麟os逐渐成为了国内自主研发操作系统领域中的一颗耀眼的明珠。麒麟OS不仅推出了许多…...
什么是shell脚本和简单shell脚本练习
文章目录 什么是shell脚本和简单shell脚本练习什么是shell脚本为什么要学习shell脚本第一个脚本编写与执行编写第一个脚本 简单的shell脚本练习简单案例交互式脚本:变量内容由用户决定随日期变化:利用date建立文件数值运算:简单的加减乘除数值…...
MySQL MyBatis
MySQL从表中随机查一条数据 SELECT * FROM address ORDER BY RAND() LIMIT 1MySQL查询表是否存在 select count(*) from information_schema.TABLES where table_name #{tableName}插入数据插入随机的uuid <insert id"insertComment" parameterType"com.…...
Leetcode力扣秋招刷题路-0802
从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 802. 找到最终的安全状态 有一个有 n 个节点的有向图,节点按 0 到 n - 1 编号。图由一个 索引从 0 开始 的 2D 整数数组 graph表示, graph[i]是与节点 i 相邻的节…...
编程中最难的就是命名?这几招教你快速上手
作者:陈立(勤仁) 你可不能像给狗狗取名字那样给类、方法、变量命名。仅仅因为它很可爱或者听上去不错。 在写代码的时候,你要经常想着,那个最终维护你代码的人可能将是一个有暴力倾向的疯子,并且他还知道你住在哪里。 01 为什么…...
NUXT规范及常见问题
props中不要使用Web环境才有的对象,服务端渲染的时候会失败 使用<Nuxt/>组件代替<router-view/>,使用<NuxtLink/>代替<router-link/>static目录下的资源是静态资源,不应该通过import或../static/img/logo.png等方式…...
2023年Q1天猫空调品牌销量排行榜
如今,空调的普及水平较高,空调行业进入存量换新为主的发展阶段。 根据鲸参谋数据分析平台的相关数据显示,2023年Q1在天猫平台上,空调的销量将近100万件,销售额将近30亿,同时,空调产品的产品均价…...
如何在比特币系统内创造人工生命
信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…...
除了Figma,再给你介绍10款好用的协同设计软件
组织结构越来越复杂,团队中的每个人都有独特的技能、经验和专业知识。我们怎样才能让团队更好地合作?在这种情况下,协同设计应运而生。 UI的未来是协同设计!如果你想把握未来的设计趋势,不妨从使用高效的协同设计软件…...
信息安全复习五:数据加密标准(DES)
一、本章梗概 1.主要内容:分组密码、分组密码用到的关键技术和结构、对称密钥密码典型算法DES 2.思考问题: ①按照明文被处理的形式,DES属于标准的分组密码 ②根据密钥的使用数量,DES属于标准的对称密码 3.内容回顾: …...
Java ---包装类
(一)包装类概念 官方说法: Java是面向对象的语言,但是为了便于开发者的使用,Java中却沿用了C语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是当需要和Java其他对象…...
Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...
MSVC(Microsoft Visual C++) 中运行库的链接方式MD和MT的区别
问题描述 MSVC(Microsoft Visual C) 中运行库的链接方式MD和MT的区别 问题解答 在MSVC编译器中,运行库(Runtime Library)有两种链接方式:MD(Multithread-DLL)和MT(Multithread)。这两种链接方式的主要区…...
设计模式之解释器模式(C++)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、解释器模式是什么? 解释器模式是一种行为型的软件设计模式,定义了一个解释器,来解释给定语…...
保姆级教程:用Ucinet和Data数据园搞定CNKI文献关键词共现分析(附数据清洗技巧)
学术研究者的文献计量分析实战指南:从CNKI数据到知识图谱可视化 在当今信息爆炸的时代,学术研究者面临的最大挑战之一是如何从海量文献中快速识别研究热点和知识结构。文献计量分析作为一种量化研究方法,能够帮助学者们系统性地梳理领域发展脉…...
【GEO实战密码】GEO 的真正护城河,是 RAG
《GEO实战密码》节选:GEO 的真正护城河,是 RAG企业做生成式搜索优化,别只盯着外部曝光。AI 愿不愿意引用你,首先取决于你的内容值不值得被信任。最近和不少企业聊 GEO,也就是生成式搜索优化,发现一个非常典…...
废物利用实战:把吃灰的中兴B860AV1.1-T刷成Armbian服务器,跑Docker、挂小雅
旧机顶盒重生计划:中兴B860AV1.1-T改造家庭服务器全指南 当家里闲置的机顶盒积满灰尘时,大多数人会选择丢弃或闲置。但你可能不知道,这些被淘汰的设备往往隐藏着惊人的潜力——只需简单改造,就能变身为一台7x24小时运行的低功耗家…...
Redis详解以应用场景
一、Redis简介 1.1 什么是Redis Redis Remote Dictionary Service(远程字典服务) 传统数据库:数据存储在磁盘,访问需要磁盘IO└── 速度慢,但数据持久化Redis:所有数据存储在内存└── 速度极快…...
Swift底层多线程:POSIX线程封装与安全并发实践
1. 项目概述:当Swift遇见POSIX线程如果你在Swift里用过DispatchQueue或者Thread,有没有想过它们背后到底是怎么运作的?特别是当你的应用需要处理高并发、低延迟的任务,或者需要在Linux服务器上跑一个Swift后端服务时,仅…...
阿钱¥¥¥openssl sm3 hmac api使用和命令行验证
1. 命令行格式验证sm3 hmacecho -n "abc" | openssl dgst -sm3 -hmac "01234567890123456789012345678901"说明:1. 01234567890123456789012345678901 为字符串key,共32位2. echo -n "abc",共abc3个字符长度&a…...
当流程图XML“损坏”时:手把手教你用Activiti API解析与修复BPMN文件
当BPMN文件遭遇“数据灾难”:Activiti深度修复实战指南 凌晨三点,服务器警报突然响起——核心业务流程引擎拒绝加载最新上传的BPMN文件。这不是简单的格式错误,而是一个从老旧系统迁移来的、经过多次手工编辑的流程定义文件。作为技术负责人&…...
【限时解密】Perplexity写作辅助底层架构图首次公开:基于逆向分析的7大能力边界与替代方案评估
更多请点击: https://codechina.net 第一章:Perplexity写作辅助功能的定位与核心价值 Perplexity并非传统意义上的语法校对工具或模板生成器,而是一个以“问题驱动、证据锚定”为核心范式的智能写作协作者。它将用户输入的写作任务自动解构为…...
收藏必备!VSCode 超详细入门教程 从安装到精通
系统下载 1、KALI安装版 https://pan.quark.cn/s/483c664db4fb 2、KALI免安装版 https://pan.quark.cn/s/23d4540a800b 3、下载所有Kali系统 https://pan.quark.cn/s/7d8b9982012f 4、KALI软件源 https://pan.quark.cn/s/33781a6f346d 5、所有Linux系统 https://pan.…...
3分钟掌握Shutter Encoder:免费开源的终极视频转换工具解决方案
3分钟掌握Shutter Encoder:免费开源的终极视频转换工具解决方案 【免费下载链接】shutter-encoder A professional video compression tool accessible to all, mostly based on FFmpeg. 项目地址: https://gitcode.com/gh_mirrors/sh/shutter-encoder 还在为…...
