前言
当希望通过git am xxxx.patch,添加一些代码修改,如果代码版本相差较大,就可能产生冲突。
这种必须要我们手动修改冲突内容。
解决过程
1. git am 尝试打入patch补丁
bash
git am 0004-patch.patch

2. git apply --reject生成冲突文件
执行此命令,将自动合入 patch 中不冲突的代码改动,同时保留冲突的部分
。这些存在冲突的改动内容会被单独存储到目标源文件的相应目录下,以后缀为 .rej 的文件进行保存。
bash
git apply --reject 0004-patch.patch

3. git status查看冲突文件
bash
git status


4. 解决冲突
打开xxx.rej
文件,例如这里的virtio-gpu.h.rej
其中包含了冲突内容,进入到对应的源码文件中,将冲突部分手动改进去就可以了。
改完后,将对应的.rej文件删除掉。
bash
# 查看
git status

5. git add xxx
将解决的冲突修改,添加到暂存区
bash
git add include/hw/virtio/virtio-gpu.h
6. git am --resolved
bash
git am --resolved
继续完成,1中被中断的 patch 合入操作。
如下图所示,applying:xxx,表示成功将该patch完整的加入到了项目代码中