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

Git Conflict Resolution

1. 这篇文章解决什么问题Git 冲突不是异常情况而是多人协作和分支开发里的正常现象。常见问题包括1. 为什么会产生冲突 2. 冲突文件里的 、、 是什么 3. merge 冲突怎么解决 4. rebase 冲突怎么解决 5. 解决冲突后为什么还要 git add 6. 如果不想继续 merge 或 rebase怎么取消这篇只讲冲突处理流程。merge、rebase、pull的概念放在05-merge-rebase-pull.md里理解。2. 冲突为什么会发生Git 自动合并的前提是两边修改的位置不冲突 或者 Git 能判断应该保留哪些内容如果两个分支都修改了同一个文件的同一块内容Git 就不敢替你决定。例如main上把一行改成inttimeout30;功能分支上把同一行改成inttimeout60;这时 Git 不知道最终应该是30还是60就会产生冲突。3. 冲突发生时 Git 在做什么假设当前历史是A -- B -- C | main \ D -- E | feature/cache在main上执行gitmerge feature/cache如果两边改了同一块内容Git 会停下来Auto-merging config.cpp CONFLICT (content): Merge conflict in config.cpp Automatic merge failed; fix conflicts and then commit the result.这时仓库处于一个“合并进行中”的状态。需要做三件事1. 打开冲突文件 2. 手动决定最终内容 3. git add 标记冲突已解决4. 冲突标记怎么看冲突文件里通常会出现marker: HEAD int timeout 30; marker: int timeout 60; marker: feature/cache真实文件里不会有marker:前缀这里只是为了避免 Git 把笔记示例误判成未解决冲突。含义是上半段 HEAD 到 之间是当前分支的内容 下半段 到 feature/cache 之间是被合并进来的分支内容如果你当前在main上执行gitmerge feature/cache那么HEAD 通常表示 main 当前内容 feature/cache 表示正在合并进来的内容5. 冲突文件应该怎么改解决冲突不是删除某一边那么简单而是决定最终代码应该长什么样。例如上面的冲突可以改成inttimeout60;也可以改成inttimeoutloadTimeoutFromConfig();关键是最终文件里不能留下 、、 最终代码必须能表达正确业务逻辑解决后执行gitstatusgitaddconfig.cppgit add在这里的含义不是“准备提交新功能”而是告诉 Git这个文件的冲突我已经处理完了6. merge 冲突的完整流程典型流程gitcheckout maingitmerge feature/cache如果出现冲突gitstatus打开冲突文件修改成最终内容。然后gitaddconfig.cppgitstatusgitcommit如果这是普通merge最后的git commit会生成一个 merge commit。有时 Git 会自动准备好 commit message直接保存即可。7. rebase 冲突的完整流程典型流程gitcheckout feature/cachegitrebase main如果某个提交应用时发生冲突Git 会停下来。解决文件后执行gitaddconfig.cppgitrebase--continue如果后面的提交继续冲突就继续重复改冲突文件 git add git rebase --continue这就是05里说的merge 冲突像一次性结算 rebase 冲突像按提交分期结算8. ours 和 theirs 怎么理解冲突时经常会看到gitcheckout--oursconfig.cppgitcheckout--theirsconfig.cpp在merge中通常可以这样理解ours 当前分支的版本 theirs 被合并进来的分支版本例如当前在main上gitmerge feature/cache那么ours main theirs feature/cache如果你确定保留当前分支版本gitcheckout--oursconfig.cppgitaddconfig.cpp如果你确定保留对方分支版本gitcheckout--theirsconfig.cppgitaddconfig.cpp注意不要只因为命令方便就整文件保留一边 很多冲突需要把两边逻辑合在一起9. rebase 里的 ours 和 theirs 容易反直觉在rebase过程中ours和theirs容易让人迷糊。因为 rebase 的过程是先切到目标基底 再把你的提交一个一个应用上去所以在 rebase 冲突里ours往往表示当前基底那边theirs往往表示正在被重新应用的那个提交。新手不建议在 rebase 冲突里盲目使用gitcheckout--oursgitcheckout--theirs更稳的方式是打开文件 读冲突上下文 手动改成最终想要的代码10. 不想继续 merge 怎么办如果 merge 到一半发现不想继续了gitmerge--abort它会尝试回到 merge 之前的状态。常见场景冲突太多想换一种合并方式 发现合错分支了 还没准备好处理这些冲突执行后再看gitstatus确认仓库已经回到正常状态。11. 不想继续 rebase 怎么办如果 rebase 到一半不想继续gitrebase--abort它会回到 rebase 开始之前。如果已经解决了当前冲突想继续gitrebase--continue如果想跳过当前这个提交gitrebase--skip--skip要谨慎因为它表示当前这个提交不要了12. 冲突解决后要做什么检查解决冲突后不要只看 Git 是否通过还要确认代码真的正确。推荐顺序gitstatusgitdiff--cached然后根据项目情况运行cmake--buildbuild ctest --test-dir build或者至少运行当前模块的编译和测试。冲突解决最容易出问题的地方不是语法而是两边逻辑都保留了但组合后语义不对 删掉冲突标记了但误删了一段必要逻辑 代码能编译但配置、路径、条件判断错了13. 减少冲突的习惯冲突不能完全避免但可以减少。比较实用的习惯1. 功能分支不要拖太久 2. 经常 fetch然后让自己的分支跟上 main 3. 不要在一个提交里混合太多无关修改 4. 格式化代码和业务修改尽量分开提交 5. 修改公共头文件、配置文件时更谨慎 6. 合并前先看 git status保证工作区干净尤其是 C 项目里下面这些文件容易引发多人冲突CMakeLists.txt 公共头文件 配置文件 README.md 接口定义文件这些文件改动前最好先同步最新主分支。14. 总结冲突的本质是 Git 无法自动判断最终内容。解决冲突时先用git status找到冲突文件再手动改成正确代码最后用git add标记已解决如果方向错了用merge --abort或rebase --abort退回去。

相关文章:

Git Conflict Resolution

1. 这篇文章解决什么问题&#xff1f; Git 冲突不是异常情况&#xff0c;而是多人协作和分支开发里的正常现象。 常见问题包括&#xff1a; 1. 为什么会产生冲突&#xff1f; 2. 冲突文件里的 <<<<<<<、、>>>>>>> 是什么&#xff1f…...

2026年云端保姆级教程:如何搭建OpenClaw?Token Plan配置及大模型API Key接入

2026年云端保姆级教程&#xff1a;如何搭建OpenClaw&#xff1f;Token Plan配置及大模型API Key接入。OpenClaw是开源的个人AI助手&#xff0c;Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案…...

从手机闪光灯到汽车大灯:聊聊‘发光强度’(坎德拉)在硬件选型中的实际应用

从手机闪光灯到汽车大灯&#xff1a;发光强度&#xff08;坎德拉&#xff09;的硬件实战指南 当你在昏暗的停车场用手机闪光灯寻找钥匙时&#xff0c;是否想过为什么有些手机的补光能照亮整个车位&#xff0c;而有些却只能勉强看清手掌&#xff1f;这个差异背后&#xff0c;隐藏…...

2026盘古石取证初赛(APK取证)

APK取证1.分析方俊朗phone.E01检材&#xff0c;筛选优质客户应用将用户查询记录存储在一个加密的本地数据库中。请问该加密数据库的文件名是什么&#xff1f;[答案格式&#xff1a;12_abc.db]题目说了这边是筛选优质客户&#xff0c;其实和手机取证最后一题一样的&#xff0c;先…...

Go语言安全编码实践:常见漏洞与防护

Go语言安全编码实践&#xff1a;常见漏洞与防护 1. 安全编码原则 安全编码是防止漏洞的根本&#xff0c;包括输入验证、输出编码、最小权限等原则。 2. 安全工具 package securityimport ("regexp""strings" )type Validator struct {emailRegex *regexp.R…...

SQLite Having 子句详解

SQLite Having 子句详解 SQLite 是一款轻量级的数据库管理系统,广泛应用于移动应用、桌面应用以及各种嵌入式系统。在 SQLite 中,HAVING 子句是一个非常重要的特性,它用于对 GROUP BY 子句的查询结果进行过滤。本文将详细介绍 SQLite 的 HAVING 子句,包括其用法、语法以及…...

抖音图片怎么去水印?2026实测免费去水印方法全盘点,这几款工具真好用

抖音图片怎么去水印&#xff1f;2026实测免费去水印方法全盘点&#xff0c;这几款工具真好用 刷抖音的时候&#xff0c;你有没有遇到过这种情况&#xff1a;看到一张超好看的图片&#xff0c;点保存&#xff0c;结果发现角落里多了一行「用户名」或者一个抖音 Logo&#xff0c;…...

Java的Random类

在Java中&#xff0c;java.util.Random 类是日常开发中最常用的伪随机数生成器。它基于线性同余算法生成随机数&#xff0c;只要给定相同的初始值&#xff08;种子 seed&#xff09;&#xff0c;就能生成完全相同的随机数序列。 &#x1f3b2; Random 类的基础使用 使用 Random…...

光子储层计算在无人机动态补偿中的创新应用

1. 深度光子储层计算在无人机动态补偿中的创新应用在无人机控制领域&#xff0c;传统PID控制器面对复杂流体环境时往往力不从心。当无人机在狭窄空间或近地面飞行时&#xff0c;地面效应、天花板效应以及湍流再循环等未建模动力学因素会导致显著的性能下降。我在参与某城市峡谷…...

2026绍兴本地GEO优化公司实测:服务规范与效果验证全解析

引言随着AI搜索算法的不断迭代&#xff0c;绍兴本地企业对GEO&#xff08;生成式引擎优化&#xff09;服务的需求日益增长。为了帮助这些企业在选择GEO优化服务商时做出明智决策&#xff0c;本测评以客观、中立的态度&#xff0c;基于EEAT原则&#xff08;经验、专业性、权威性…...

如何在3分钟内完成Windows与Office智能激活:KMS_VL_ALL_AIO完全指南

如何在3分钟内完成Windows与Office智能激活&#xff1a;KMS_VL_ALL_AIO完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows操作系统和Office办公软件的正版激活而烦恼吗&…...

ElevenLabs账号被限频?紧急修复手册:3分钟绕过Rate Limit限制,解锁Pro级语音并发权限

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs超写实语音生成教程 ElevenLabs 是当前业界领先的 AI 语音合成平台&#xff0c;其模型在语调自然度、情感表达力与跨语言一致性方面表现卓越。本章将指导你完成从 API 接入到高质量语音生成的…...

CSS 视图过渡完全指南

CSS 视图过渡完全指南 引言 CSS 视图过渡&#xff08;View Transitions&#xff09;是一个强大的新特性&#xff0c;它允许开发者创建平滑的页面过渡动画。本文将深入探讨视图过渡的各种用法和高级技巧。 基础概念回顾 什么是视图过渡 视图过渡 API 允许你在 DOM 状态变化时创建…...

v7上线首周,93%老用户没发现的隐藏指令——高阶提示工程实战手册,含12个未公开参数调用语法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney v7核心架构升级与隐性能力图谱 多模态融合推理引擎重构 Midjourney v7 引入了基于分层注意力对齐&#xff08;Hierarchical Attention Alignment, HAA&#xff09;的新型生成主干&#xff…...

Happy Island Designer完整指南:免费在线岛屿设计工具终极教程

Happy Island Designer完整指南&#xff1a;免费在线岛屿设计工具终极教程 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)"&#xff0c;是一个在线工具&#xff0c;它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal C…...

抖音图片怎么去水印?2026实测去水印方法全整理,免费工具一并推荐

抖音图片怎么去水印&#xff1f;2026实测去水印方法全整理&#xff0c;免费工具一并推荐 每次在抖音刷到一张好看的图&#xff0c;长按保存下来却发现角落盖着一行"昵称抖音"水印&#xff0c;这种体验相信不少人都经历过。水印不影响欣赏还好&#xff0c;但如果想把图…...

抖音无水印下载神器:douyin-downloader完整指南,轻松保存高清视频

抖音无水印下载神器&#xff1a;douyin-downloader完整指南&#xff0c;轻松保存高清视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and …...

LangChain+FAISS 向量数据库搭建轻量化 RAG 应用

&#x1f4dd; 本章学习目标&#xff1a;本章聚焦企业轻量化落地&#xff0c;帮助读者快速掌握基于 LangChainFAISS 的私有化 RAG 开发流程。通过本章学习&#xff0c;你将从零搭建一套无需 GPU、无外网依赖、纯本地运行、代码极简、可直接上线的轻量化 RAG 应用。 一、引言&a…...

本地化AI代码助手部署指南:从模型选型到性能调优

1. 项目概述&#xff1a;一个面向开发者的本地化AI代码助手最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“JPeetz/Hermes-Studio”。乍一看名字&#xff0c;可能会联想到希腊神话里的信使赫尔墨斯&#xff0c;或者某个设计软件。但点进去你会发现&#xff0c;这其实是一…...

数据库优化(八)MySQL 大小管理 ——东方仙盟金丹期

1查询整个mysql下数据库大小SELECTtable_schema AS db_name,ROUND(SUM(data_length index_length)/1024/1024,2) AS size_mb FROM information_schema.tables GROUP BY table_schema ORDER BY size_mb DESC;| db_name | size_mb | -------------------------…...

从0到1掌握Ansible:让自动化运维不再是梦想

最近在公司推进自动化运维的时候&#xff0c;发现很多同事对Ansible还是一知半解&#xff0c;要么就是简单用用&#xff0c;要么就是直接放弃。其实Ansible真的没那么复杂&#xff0c;我用了这么多年&#xff0c;今天就把我的实战经验分享给大家。 说实话&#xff0c;刚开始接…...

Resolink MCP:基于MCP协议与Playwright的AI浏览器自动化实践

1. 项目概述&#xff1a;当AI助手学会“动手”——Resolink MCP的浏览器自动化革命如果你和我一样&#xff0c;每天在Cursor、Claude这类AI编程助手的陪伴下写代码&#xff0c;那你一定遇到过这样的场景&#xff1a;你正和AI热烈讨论一个技术方案&#xff0c;突然需要去浏览器里…...

用PLC控制Labview自动运行

博图软件设置注意数据位正确下图为Labview读取CSV文件的位置测试数据如下图所示实现方法&#xff1a;在1分支内创建好条件&#xff0c;当PLC心跳为True那么就去跑True里面的流程&#xff08;CSM框架&#xff09;...

别再死磕外链了:用Python+搜索API实现Google SEO自动化内容生产

做Google SEO的人都有一个共同感受&#xff1a;越来越难了。 以前发发外链、堆堆锚文本就能上去&#xff0c;现在不行了。Google的算法从"匹配关键词"进化到了"匹配搜索意图"。外链权重从60%降到30%&#xff0c;内容质量成了核心排名因素。 但问题是&#…...

基于Helm与Kubernetes的以太坊节点自动化部署与运维实战

1. 项目概述&#xff1a;当以太坊遇见Kubernetes如果你和我一样&#xff0c;在区块链基础设施领域摸爬滚打多年&#xff0c;从早期手动编译客户端、配置systemd服务&#xff0c;到后来用Docker Compose编排节点&#xff0c;每一步都伴随着大量的重复劳动和运维痛点。当节点数量…...

AI应用着陆页模板:快速构建专业产品门户的实战指南

1. 项目概述&#xff1a;一个面向AI应用落地的着陆页模板 最近在折腾AI应用开发的朋友&#xff0c;估计都遇到过同一个问题&#xff1a;模型和算法好不容易调好了&#xff0c;后端API也搭起来了&#xff0c;但一到“怎么让用户用起来”这一步&#xff0c;就卡壳了。尤其是那个…...

codebase-digest:自动化代码库分析工具的设计原理与工程实践

1. 项目概述&#xff1a;当代码库变成“黑盒”&#xff0c;我们如何快速理解它&#xff1f;你有没有接手过一个庞大而陌生的代码库&#xff1f;面对成千上万的文件和错综复杂的依赖关系&#xff0c;那种感觉就像被扔进了一个没有地图的迷宫。传统的做法是&#xff0c;你得像考古…...

Alph:一键统一配置AI编程助手MCP服务器的命令行工具

1. 项目概述&#xff1a;告别手动配置的混乱时代 如果你和我一样&#xff0c;日常开发中同时用着 Cursor、Claude Code、Gemini CLI 这些 AI 编程助手&#xff0c;那你一定对下面这个场景深恶痛绝&#xff1a;每次想给它们接入一个新的 MCP 服务器&#xff0c;都得像个考古学家…...

国产替代之SFT1452-H与VBFB1251K参数对比报告

N沟道功率MOSFET参数对比分析报告一、产品概述SFT1452-H&#xff1a;安森美&#xff08;onsemi&#xff09;N沟道功率MOSFET&#xff0c;耐压250V&#xff0c;低导通电阻&#xff0c;ESD门极保护&#xff0c;符合无卤素标准。封装&#xff1a;IPAK (TO-251)。适用于通用开关应用…...

Photoshop AVIF插件实战:解锁下一代图像格式的完整解决方案

Photoshop AVIF插件实战&#xff1a;解锁下一代图像格式的完整解决方案 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 为Adobe Photoshop添加AVIF格式支持不再…...