当前位置: 首页 > 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.xdnf.cn/news/1359541.html

相关文章:

  • Qt工具栏中图标槽函数没有响应的问题分析
  • 十一、redis 入门 之 数据持久化
  • 基于FPGA的情绪感知系统设计方案:心理健康监测应用(一)
  • yggjs_rlayout框架v0.1.2使用教程 01快速开始
  • 基于RBF-GA的铝/镁异材FSLW工艺参数优化研究
  • Qt---架构文件.pro
  • 02-开发环境搭建与工具链
  • 鸿蒙中点击响应时延分析
  • 多核多线程应用程序开发可见性和乱序如何处理
  • css3之flex布局
  • Linux 学习笔记 - 集群管理篇
  • 音视频学习(五十五):H264中的profile和level
  • pyecharts可视化图表-scatter:从入门到精通
  • Trip Footprint旅行足迹App
  • jar包项目自启动设置ubuntu
  • Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件
  • Altium Designer 22使用笔记(9)---PCB布局、布线操作
  • 复杂街景误检率↓79%!陌讯时空建模算法在非机动车乱停放检测的实战解析
  • 点播视频预览是怎么做到的?
  • VsCode使用SFTP连接Linux
  • 使用 Golang 的 Gin 框架实现一周极限编程计划:全网 AIGC 项目热点追踪应用
  • MATLAB 与 Simulink 联合仿真:控制系统建模与动态性能优化
  • yggjs_rlayout框架v0.1.2使用教程 02 TechLayout 布局组件
  • 上科大解锁城市建模新视角!AerialGo:从航拍视角到地面漫步的3D城市重建
  • nginx部署goaccess监控
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day12
  • leetcode 1493 删掉一个元素以后全为1的最长子数组
  • mybatis过渡到mybatis-plus过程中需要注意的地方
  • 《Distilling the Knowledge in a Neural Network》论文PDF分享, 2015 年,谷歌提出了 “知识蒸馏” 的概念
  • 06 - spring security角色和权限设置