IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git 的Auto Merge自动合并逻辑与不熟悉而遇到的坑 -> 正文阅读

[开发工具]Git 的Auto Merge自动合并逻辑与不熟悉而遇到的坑

每个人都有使用Git管理源代码的经历,一般的流程相信都很清楚?

工作区修改代码 -> 编译通过后 git add xxx -> git commit -m 'xxxxx'? -> 合并dev和master ->git pull -> 解决冲突->push origin

今天就因为不熟悉Git Merge的逻辑所以踩坑了

有同事发现我有部分代码有功能上有重复的定义。所以帮我删除了,但是我不知道,我也删除了这块地方

typedef struct
{
 INT8U FanCtrlModeCmd;
}PACKED RaefCfgSysFanCtrlModeReq_T;

typedef struct
{
 INT8U CompletionCode;
}PACKED RaefCfgSysFanCtrlModeRes_T;

//set fan speed
typedef struct
{
 INT8U pwm_num;
 INT8U dutycycle_percent;
}PACKED RaefSetFanSpeedReq_T;

typedef struct
{
 INT8U CompletionCode;
}PACKED RaefSetFanSpeedRes_T;

这两处地方分别在57行和197行,这里称为A和B

同事删除了B部分,而我删除了A部分。

最后当我pull的时候,这个文件的AB部分代码都没了。???????

最后弄了半天,才发现是因为Git的自动合并给搞没的。

原因如下:

这个git合并的貌似是对比commit对同一个文件同一个地方的操作.
比如有两Commit?,分别为Commit?1和Commit?2。这两个Commit 都来自同一个分支的Commit?0。
有一个文件O.h?这个文件在Commit?0?中有两处定义,分别为A和B。
Commit?1把A保留,没有改动任何东西。把B全部删除。
Commit?2把A全部删除,保留了B。

如果Commit?2去合并Commit?1,那么Git对比两个分支在?A和B部分的操作,
由于Commit?2删除了A,?Commit?1保留A,所以Git?自动将Commit?2的删除合并
然后Commit?2保留了B,?Commit?1删除了B??同样Git把Commit?1的删除合并到Commit?2
所以最终结果就是合并后产生的Commit?3中没有A和B
如果想要使Commit?3中有B,那么在Commit?2中不应该保留B,而是要修改B,?比如在B部分的前面加换行,这样就相当于在下一行添加了一个B,之前B的那行被修改为空白行
这样Git就不会自动合并,因为Commit?1和Commit?2在B的操作不一致,产生冲突


反正总的来说就是Git会在两个Commit里面自动的将修改合并,除非这个地方两个Commit都有改动

所以在合并前先和同事交流好,除非你们都是各自修改代码。如果涉及删除部分代码和文件,那么就要沟通一些,防止发送逻辑冲突。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:13:53  更:2021-09-05 11:17:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:21:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码