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

【嵌入式开发 Linux 常用命令系列 8 -- git checkout 解冲突详细介绍】

文章目录

  • 1. Git 冲突产生的场景
  • 2. 冲突标记符号解释
  • 3. git checkout --ours 和 git checkout --theirs
      • 语法
      • 含义
      • 使用场景
  • 4. 操作完成后的流程
  • 5. 举例演示

1. Git 冲突产生的场景

当你在 git mergegit rebasegit cherry-pick 等操作时,如果 同一个文件的同一部分在两个分支中都被修改了,Git 就会无法自动合并,结果是产生冲突。

冲突后的文件中会出现类似这样的标记:

<<<<<<< HEAD
printf("Hello from main branch\n");
=======
printf("Hello from feature branch\n");
>>>>>>> feature

2. 冲突标记符号解释

  • <<<<<<< HEAD
    表示 当前分支(即你所在的分支) 的内容,也就是 ours

  • =======
    表示 ours 与 theirs 的分隔符。

  • >>>>>>> feature
    表示 要合并进来的分支(目标分支) 的内容,也就是 theirs

所以:

  • ours = 当前分支(HEAD)

  • theirs = 你要合并的分支

3. git checkout --ours 和 git checkout --theirs

这两个命令在冲突文件存在时使用,可以帮助你快速选择保留哪一方的版本。

语法

git checkout --ours <file>
git checkout --theirs <file>

含义

  • git checkout --ours <file>
    <file> 冲突部分全部替换为 当前分支(HEAD,ours) 的内容。

  • git checkout --theirs <file>
    <file> 冲突部分全部替换为 合并进来的分支(theirs) 的内容。

使用场景

  1. 如果你 确信本地分支的修改更正确,执行:

    git checkout --ours filename.c
    
  2. 如果你 确信远端分支的修改更正确,执行:

    git checkout --theirs filename.c
    
  3. 如果想要手动融合两边的修改(而不是简单选择一方),就要编辑冲突文件,把冲突标记符号 <<<<<<<=======>>>>>>> 删除,并保留你想要的代码。

4. 操作完成后的流程

无论是用 --ours--theirs,还是手动修改,最后都要:

git add <file>
git commit

Git 会生成一个合并提交(如果是 merge)。

5. 举例演示

假设我们在 main 分支有:

printf("Hello from main branch\n");

feature 分支有:

printf("Hello from feature branch\n");

合并时冲突文件会是:

<<<<<<< HEAD
printf("Hello from main branch\n");
=======
printf("Hello from feature branch\n");
>>>>>>> feature
  • 如果执行 git checkout --ours file.c → 文件变成:

    printf("Hello from main branch\n");
    
  • 如果执行 git checkout --theirs file.c → 文件变成:

    printf("Hello from feature branch\n");
    

总结:

  • ours = 当前分支 (HEAD)

  • theirs = 要合并进来的分支

  • <<<<<<< / ======= / >>>>>>> 是冲突标记,标记 ours 与 theirs 的不同部分。

  • git checkout --ours → 保留当前分支的修改

  • git checkout --theirs → 保留合并分支的修改

http://www.dtcms.com/a/348174.html

相关文章:

  • 【从零开始学习Redis】如何设计一个秒杀业务
  • [身份验证脚手架] 认证路由 | 认证后端控制器与请求
  • Zabbix 7.0中文乱码矫正
  • 网络协议---TCP
  • 论文阅读:VACE: All-in-One Video Creation and Editing
  • 机器学习算法-朴素贝叶斯
  • k8sday16调度器
  • Java全栈工程师面试实战:从基础到微服务的深度解析
  • 【运维进阶】高可用和负载均衡技术
  • 港口集装箱编号识别误识率↓79%!陌讯多模态融合算法落地优化
  • 静电服漏检率↓79%!陌讯多模态识别算法在智慧安检的实战解析
  • 下料口堵塞误报率↓79%!陌讯多模态融合算法在工业物料输送的实战解析
  • 电子厂静电释放检测误报率↓81%!陌讯多模态融合算法在安全生产监控的落地实践
  • 【Linux】Java线上问题,一分钟日志定位
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
  • lanczos算法的核心——Ritz向量的计算(主要思想为反向映射)
  • 《一次高并发场景下疑难Bug的深度排查与复盘》
  • 基于Langchain框架的DeepSeek-v3+Faiss实现RAG知识问答系统(含完整代码)
  • 【股票数据API接口12】如何获取股票近年分红数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • AI-调查研究-59-机器人 行业职业地图:发展路径、技能要求与薪资全解读
  • Android - 用Scrcpy 将手机投屏到Windows电脑上
  • [创业之路-567]:数字技术、数字产品、数字资产、数字货币、数字企业、数字经济、数字世界、数字人生、数字智能、数字生命
  • 第一个小项目java
  • Linux 软件编程(十)网络编程:网络协议,UDP 与 TCP 知识点
  • 逆光场景识别率↑76%!陌讯多模态融合算法在手机拍照识别的落地实践​
  • 【网络运维】Shell 脚本编程: for 循环与 select 循环
  • ARINC 825板卡的应用
  • vue-pure-admin页面引入和功能添加流程解析
  • Smooze Pro for mac 鼠标手势增强软件
  • 力扣【1277. 统计全为1的正方形子矩阵】——从暴力到最优的思考过程