每个人都有使用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