当前位置: 首页 > article >正文

Git合并冲突实战:当你的dev分支和master分支修改了同一个README文件时怎么办?

Git合并冲突实战当dev分支与master分支修改同一个README文件时刚接触Git时最让人头疼的莫过于合并冲突。记得我第一次遇到冲突时屏幕上那些奇怪的和符号让我完全不知所措。但后来发现只要理解冲突的本质解决起来其实并不复杂。今天我们就用一个最简单的例子——两个分支同时修改README文件来彻底搞懂Git冲突的解决之道。1. 冲突场景搭建制造一个可控的事故让我们从零开始亲手制造一个冲突这样理解起来会更直观。假设我们有一个简单的项目只有README.md文件# 初始化Git仓库 mkdir git-conflict-demo cd git-conflict-demo git init # 创建初始README文件 echo # 项目说明 README.md git add README.md git commit -m 初始提交 # 创建dev分支并修改README git checkout -b dev echo dev分支的修改 README.md git commit -am dev分支修改README # 切回master分支做不同修改 git checkout master echo master分支的修改 README.md git commit -am master分支修改README现在我们有了master分支的README最后一行是master分支的修改dev分支的README最后一行是dev分支的修改这两个修改在同一文件的同一位置这就是典型的合并冲突场景。2. 冲突的产生与识别当我们尝试将dev分支合并到master时git checkout master git merge dev这时Git会友好地虽然看起来不太友好告诉我们自动合并 README.md 冲突内容合并冲突于 README.md 自动合并失败修正冲突然后提交修正后的结果。打开README.md文件会看到类似这样的内容# 项目说明 HEAD master分支的修改 dev分支的修改 dev这些标记的含义是 HEAD到之间是当前分支master的内容到 dev之间是要合并的分支dev的内容3. 手动解决冲突解决冲突的本质就是告诉Git这两个版本我到底要保留哪个或者如何组合它们。对于我们的README文件有几种处理方式3.1 保留master分支的修改删除dev分支的修改和冲突标记保留# 项目说明 master分支的修改3.2 保留dev分支的修改删除master分支的修改和冲突标记保留# 项目说明 dev分支的修改3.3 合并两个修改也可以选择保留两者的内容# 项目说明 master分支的修改 dev分支的修改提示在实际项目中合并内容时需要确保语义正确不仅仅是简单拼接4. 完成合并流程确定好最终内容后需要告诉Git冲突已经解决# 将修改添加到暂存区 git add README.md # 完成合并提交 git commit这时Git会自动生成一个合并提交消息你也可以修改它。完成后使用git log --graph可以看到分支合并的历史。5. 使用图形化工具辅助解决虽然命令行是基础但图形化工具能让冲突解决更直观。比如VS Code内置的Git工具打开有冲突的文件VS Code会高亮显示冲突区域顶部会出现操作按钮可以选择接受当前更改master分支接受传入更改dev分支保留两者更改比较更改注意图形化工具虽然方便但理解底层原理仍然很重要6. 冲突预防策略与其事后解决冲突不如尽量减少冲突发生频繁合并定期将master分支合并到开发分支而不是等到最后小步提交小而专注的提交比大而全的提交更容易管理沟通协作团队成员修改相同文件时及时沟通分支策略功能分支生命周期尽量短使用git pull --rebase而不是简单的git pull# 推荐的工作流程示例 git checkout dev git fetch origin git rebase origin/master # 在本地先解决可能的冲突 # 测试通过后再合并到master7. 高级场景多人协作中的冲突处理在实际团队协作中可能会遇到更复杂的情况7.1 没有目标分支推送权限时如果你没有master分支的推送权限标准的流程是在本地解决dev分支与master分支的冲突推送dev分支到远程创建Pull Request/Merge Request由有权限的同事审核后合并# 在dev分支上操作 git checkout dev git fetch origin git merge origin/master # 将master最新代码合并到dev # 解决冲突后 git push origin dev7.2 使用rebase替代merge有些团队偏好使用rebase来保持线性历史git checkout dev git rebase master # 解决可能出现的冲突 git add . git rebase --continue # 如果放弃rebase git rebase --abortrebase的黄金法则不要对已经推送到远程的分支执行rebase8. 真实项目中的冲突解决经验在大型项目中冲突可能涉及多个文件、复杂的代码逻辑。以下是一些实用技巧理解上下文不要机械地解决冲突要理解为什么会有这些修改利用差异工具git difftool可以并排比较版本差异保留测试解决冲突后确保运行测试验证代码仍然正常工作分段提交复杂的冲突可以分多个小提交解决便于回退注释标记临时添加注释标记冲突区域解决后再删除# 查看特定文件的冲突历史 git log -p -- README.md # 使用diff工具比较 git difftool HEAD HEAD~1 -- README.md记住Git冲突不是错误而是版本控制系统在尽职尽责地保护你的代码。每次解决冲突都是对项目历史的一次精心维护。

相关文章:

Git合并冲突实战:当你的dev分支和master分支修改了同一个README文件时怎么办?

Git合并冲突实战&#xff1a;当dev分支与master分支修改同一个README文件时 刚接触Git时&#xff0c;最让人头疼的莫过于合并冲突。记得我第一次遇到冲突时&#xff0c;屏幕上那些奇怪的<<<<<<<和>>>>>>>符号让我完全不知所措。但后…...

全球及中国定制线束市场现状调查及投资价值分析报告

2026-2032年全球及中国定制线束市场现状调查及投资价值分析报告定制线束是根据特定设备或系统需求设计和制造的电气连接组件&#xff0c;由导线、电缆、连接器、端子及保护材料等组成&#xff0c;用于实现电源和信号的传输与分配&#xff0c;广泛应用于汽车、工业设备、消费电子…...

Mathpix与Simpletex:数学公式识别工具实战横评

1. 数学公式识别工具的选择困境 作为一名经常需要处理数学公式的学生或研究人员&#xff0c;你一定遇到过这样的烦恼&#xff1a;手写笔记需要转为电子版、纸质试卷要整理成文档、论文参考文献中的公式需要引用。传统的手动输入LaTeX或MathType不仅效率低下&#xff0c;还容易出…...

LVDS端口悬空竟会导致误触发?一个PCB设计疏忽引发的故障排查与保护电路设计全记录

LVDS端口悬空故障解析&#xff1a;从噪声误触到防护设计的工程实践 在高速数字系统设计中&#xff0c;LVDS&#xff08;低压差分信号&#xff09;因其低功耗、高抗干扰性和优异的EMI特性&#xff0c;已成为板间互连的黄金标准。但正是这种看似完美的接口技术&#xff0c;却隐藏…...

告别理论推导!用Python+Matlab复现WMMSE算法,手把手搞定MIMO波束成形优化

实战WMMSE算法&#xff1a;Python与Matlab双版本实现MIMO波束成形优化 在无线通信系统的设计中&#xff0c;多用户MIMO波束成形技术一直是提升频谱效率的关键。然而&#xff0c;面对复杂的数学推导和算法实现&#xff0c;许多工程师和研究者在实际应用中常常感到无从下手。本文…...

从代码小白到脚本高手:拆解一个实用的Illustrator自动角线脚本(JavaScript for AI)

从代码小白到脚本高手&#xff1a;拆解Illustrator自动角线脚本的JavaScript实现 在印刷品制作流程中&#xff0c;角线标注是不可或缺的环节。传统手动绘制不仅耗时费力&#xff0c;还容易因人为疏忽导致误差。这个自动角线脚本通过JavaScript与Illustrator DOM的交互&#xff…...

OpenProject项目管理终极指南:从零开始掌握开源协作神器

OpenProject项目管理终极指南&#xff1a;从零开始掌握开源协作神器 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject 还在为团队协作效率低下而烦恼…...

Glide缓存调优实战:根据你的App场景,选对DiskCacheStrategy和skipMemoryCache

Glide缓存调优实战&#xff1a;根据App场景定制DiskCacheStrategy与skipMemoryCache 在移动应用开发中&#xff0c;图片加载的性能直接影响用户体验。Glide作为Android平台最受欢迎的图片加载库之一&#xff0c;其缓存机制设计精妙但配置灵活&#xff0c;不同的业务场景需要不同…...

从数据日报到周报:用Hive SQL自动生成业务日期维度的完整流程

从数据日报到周报&#xff1a;用Hive SQL构建自动化业务日期维度的全流程指南 每天早上9点&#xff0c;数据团队总会收到业务部门的连环追问&#xff1a;"昨天的GMV数据出来了吗&#xff1f;""本周累计用户增长了多少&#xff1f;""和上月同期相比转化…...

哔咔漫画下载器:高性能多线程下载引擎深度解析

哔咔漫画下载器&#xff1a;高性能多线程下载引擎深度解析 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器&#xff0c;带图形界面 带收藏夹&#xff0c;已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mirrors…...

SpringBoot项目里那个诡异的NoClassDefFoundError,我排查了3小时才搞明白

SpringBoot项目中那个诡异的NoClassDefFoundError&#xff1a;一次深度排查实录 那天凌晨2点&#xff0c;生产环境的报警短信把我从睡梦中惊醒——核心服务启动失败&#xff0c;日志里赫然躺着NoClassDefFoundError: Could not initialize class com.utils.EncryptHelper。这个…...

别再死磕DDPM了!用Score-Based Generative Modeling (SGM) 换个思路玩转扩散模型

从DDPM到SGM&#xff1a;探索生成模型的双轨范式革命 当开发者们还在为DDPM的噪声预测网络调参时&#xff0c;前沿研究已经开辟了另一条基于分数匹配的生成路径。本文将带您穿透数学表象&#xff0c;理解Score-Based Generative Modeling&#xff08;SGM&#xff09;如何通过概…...

从像素到电影:Photon光影着色器如何重新定义Minecraft渲染管线

从像素到电影&#xff1a;Photon光影着色器如何重新定义Minecraft渲染管线 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon 在数字渲染领域&#xff0c;实现真实感与性能平衡一直是开发…...

FreeCAD - “增料放样“基础使用

创建第一个草图创建第二个草图偏置其中一个草图点击“增料放样”&#xff0c;选择其中一个草图附件&#xff0c;点击“OK”轮廓对象为上一步选择的附件&#xff0c;点击添加截面&#xff0c;选择另一草图中的轮廓点击 OK 完成操作...

Comsol介质超表面三次谐波非线性模型研究:倍频模型与转换效率计算文献赠予

Comsol介质超表面三次谐波非线性模型&#xff0c;包含功率依赖。 且倍频模型以及转换效率计算。打开COMSOL时总会被非线性光学模块的选项搞得头疼&#xff1f;今天咱们直接拿介质超表面的三次谐波模型开刀&#xff0c;聊聊如何让超薄结构产生高频光波。非线性效应这东西&#x…...

从若依RuoYi-Vue项目里“抠”出前端独立部署,保姆级分离实战教程

若依RuoYi-Vue项目前端独立部署实战&#xff1a;从一体化到模块化开发的深度拆解 在中小型团队的实际开发中&#xff0c;我们常常会遇到这样的困境&#xff1a;虽然采用了"前后端分离"的技术架构&#xff0c;但项目代码仍然耦合在一个仓库里&#xff0c;导致团队协作…...

别再死记硬背CNN结构了!用PyTorch手把手带你‘画’出第一个卷积层(附代码)

用PyTorch‘画’出你的第一个卷积层&#xff1a;从零构建CNN的视觉化实践 当你第一次听说卷积神经网络&#xff08;CNN&#xff09;时&#xff0c;是否曾被那些抽象的理论概念和复杂的结构图搞得晕头转向&#xff1f;别担心&#xff0c;今天我们不谈枯燥的数学公式&#xff0c;…...

3PEAK思瑞浦 TPR6040F33-S3TR SOT23G-3 电压基准芯片

特性 固定输出电压: -2.048V、2.5V、3V、3.3V、4.096V和5V 高初始精度和低温系数 -A级:最大0.1%&#xff0c;25ppm/C -B级:最大0.2%&#xff0c;50ppm/C 工作温度范围:-40C至125C 滴流能力:150A至15mA 适用于任何电容负载&#xff0c;稳定可靠 封装:SOT23G-3...

别再死记贝叶斯公式了!用sklearn的CategoricalNB实战Ionosphere数据集,手把手教你搞定分类

别再死记贝叶斯公式了&#xff01;用sklearn的CategoricalNB实战Ionosphere数据集&#xff0c;手把手教你搞定分类 当你第一次接触机器学习分类任务时&#xff0c;可能会被各种数学公式吓退。但今天我要告诉你一个秘密&#xff1a;实际应用中&#xff0c;你完全不需要死记硬背贝…...

干货版《算法导论》 01:从问题定义到正确性证明

✨ 算法导论 01&#xff1a;从问题定义到正确性证明&#x1f516; 开篇&#xff1a;这门课&#xff0c;到底在教什么&#xff1f;&#x1f9e9; 一、先搞懂&#xff1a;什么是「计算问题」&#xff1f;1.1 形式化定义 ⚙️1.2 图示&#xff1a;二分图模型 &#x1f4ca;1.3 为什…...

3PEAK思瑞浦 TPS05S60A-DF8R-S DFN3X3-10 功率电子开关

特性 工作电压范围:2.5伏至5.5伏 集成高边MOSFET -13毫欧开启电阻 6A最大连续电流 -1.2-A至6-A可调输出电流限制 -4.7A时电流限制精度为土5% 2-A低待机电流 内置软启动和浪涌控制 集成保护功能:-过流保护 -硬短路至地保护-反向电流阻断保护 -过温保护 温度范围:-40C至125C 封装…...

基于Java+Spring Boot的在线客服系统源码,实时数据统计管理后台,高效对话处理功能...

Java在线客服系统源码 企业网站客服聊天源码 网页客服源码开发环境&#xff1a;Java Spring boot mysql 通信技术&#xff1a;netty框架后台管理首页-工作绩效&#xff08;会话、邀请、拒绝、已接待、平均会话时长&#xff09;统计首页-在线客服业务概况&#xff08;访客&am…...

从零到生产:Spring Cloud Sentinel 规则持久化到Nacos的两种推模式深度解析与选型指南

从零到生产&#xff1a;Spring Cloud Sentinel 规则持久化到Nacos的两种推模式深度解析与选型指南 在微服务架构中&#xff0c;流量控制与系统保护是确保服务稳定性的关键环节。Sentinel作为阿里巴巴开源的轻量级流量控制组件&#xff0c;凭借其丰富的应用场景和强大的实时监控…...

ROFL播放器:英雄联盟回放分析终极指南,轻松查看比赛数据

ROFL播放器&#xff1a;英雄联盟回放分析终极指南&#xff0c;轻松查看比赛数据 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英…...

从零验证ROS Noetic安装:在Ubuntu 20.04上跑通小乌龟后,你的环境真的没问题了吗?

从零验证ROS Noetic安装&#xff1a;在Ubuntu 20.04上跑通小乌龟后&#xff0c;你的环境真的没问题了吗&#xff1f; 当你第一次在Ubuntu 20.04上成功运行ROS Noetic的小乌龟模拟器时&#xff0c;那种成就感确实令人兴奋。但作为一名严谨的开发者&#xff0c;你是否想过&#x…...

从F类到连续F类:一个‘连续因子’如何让功放设计空间从点变成线?

连续类功率放大器设计&#xff1a;从离散点到连续空间的革命性跨越 在射频功率放大器设计领域&#xff0c;工程师们长期面临一个核心矛盾&#xff1a;如何在不牺牲效率的前提下扩展工作带宽&#xff1f;传统F类放大器虽然能实现理论100%的效率&#xff0c;但其设计空间被限制在…...

避开理论坑!用‘汽车变道’和‘滚动优化’大白话搞懂模型预测控制MPC

避开理论坑&#xff01;用‘汽车变道’和‘滚动优化’大白话搞懂模型预测控制MPC 想象一下你在高速公路上开车&#xff0c;前方突然出现一辆慢速行驶的卡车。作为驾驶员&#xff0c;你会怎么做&#xff1f;大多数人会先观察周围车况&#xff0c;预测变道后的行驶轨迹&#xff0…...

告别STL!用Blender 3.4.0和USD格式,5分钟搞定Isaac Sim机器人模型导入与美化

告别STL&#xff01;用Blender 3.4.0和USD格式5分钟搞定Isaac Sim机器人模型导入与视觉升级 当你在Isaac Sim中导入机器人模型时&#xff0c;是否经常遇到格式不兼容、材质丢失或渲染效果生硬的问题&#xff1f;传统STL/OBJ格式不仅缺乏层级结构&#xff0c;还丢失了关键的材质…...

从手机变薄说起:0402、0603这些电容封装,如何‘卷’动了消费电子的设计?

从手机变薄说起&#xff1a;0402、0603电容封装如何重塑消费电子设计 当第一代iPhone以11.6毫米厚度惊艳世界时&#xff0c;很少有人注意到主板角落里那些芝麻大小的陶瓷电容。如今旗舰手机厚度已突破6毫米大关&#xff0c;这背后是一场持续十余年的微型化革命——其中多层陶瓷…...

STM32CubeMX配置TIM输出比较的5个常见坑,你踩过几个?(附逻辑分析仪调试实录)

STM32CubeMX配置TIM输出比较的5个常见坑&#xff0c;你踩过几个&#xff1f;&#xff08;附逻辑分析仪调试实录&#xff09; 在嵌入式开发中&#xff0c;定时器的输出比较功能是一个强大但容易出错的工具。许多开发者在初次使用STM32CubeMX配置TIM输出比较时&#xff0c;往往会…...