导出过程:
一、导出patch:
git format-patch 163caed7b034e0d48ba889851e9a42d33cd651d4 -1
git format-patch 163caed7b034e0d48ba889851e9a42d33cd651d4 -1
生成:
0001-HIVE-18778-Needs-to-capture-input-output-entities-in.patch
0002-HIVE-18778-Needs-to-capture-input-output-entities-in.patch
二、检查检查patch/diff是否能正常打入:
git apply --check 0001-HIVE-18778-Needs-to-capture-input-output-entities-in.patch
git apply --check 0002-HIVE-18778-Needs-to-capture-input-output-entities-in.patch
导入过程:
一般开源社区问题修复都会提供patch,以Hive为例,需要将下方的patch文件准备好,放入源码
三、应用patch:
git apply xxx.patch
或
git apply --reject xxx.patch
应用patch时出现冲突处理办法:
(1) 问题:应用patch有时会出现错误:
...
error:xxx does not apply
...
此时查看上述的错误信息得不到任何有关冲突的提示,可以使用下面的方法解决这个问题:
git apply --reject xxx.patch
这样可以先把没有冲突的文件进行合并,同时有冲突的文件会做出标记(会产生xxx.rej文件,xxx为文件名称),查看产生的rej文件即可得知产生冲突的代码片段,对产生冲突的文件进行修改,完成后可以删除rej文件,接着执行
git add 冲突文件
git add 其它无冲突文件
最后执行:
git am --resolved
(2) 问题:git apply -v 提示 Skipped patch 打不上patch的解决办法
参考:https://blog.csdn.net/dasunwarman/article/details/78488756
因为目录不正确,在patch加上目录前缀 --directory xx
Git 如何打patch参考:
https://blog.csdn.net/liuhaomatou/article/details/54410361
https://juejin.im/post/5b5851976fb9a04f844ad0f4
https://blog.csdn.net/sole_cc/article/details/80641342