1 git patch生成方法
git format-patch commit-id
commit-id 该次提交之后的所有patch,不包含commit-id这次提交
git format-patch commit-id1..commit_id2
commit-id1和commit-id2这两次提交之间的所有patch
git format-patch -M master
当前分支所有超前master的提交
git format-patch -n commit-id
某次提交(含)之前的几次提交,n指提交数,所有某次提交的patch命令为:git format-patch -1 commit-id
git format-patch命令生成的补丁文件默认从0001开始编号,使用提交信息中的第一行作为文件名称;
如果加上参数--numbered-files,则输出的补丁文件名称只有数字;
如果加上参数-o dir, 则制定了补丁文件的存储路径
2 应用patch文件
检查patch文件:git apply --stat xxx.patch
检查patch文件能否应用成功:git apply --check xxx.patch
打patch:git am xxx.patch
3 应用patch时出现冲突
应用patch有时会出现错误:
...
error:xxx does not apply
...
此时查看上述的错误信息得不到任何有关冲突的提示,可以使用下面的方法解决这个问题:
git apply --reject xxx.patch
这样可以先把没有冲突的文件进行合并,同时有冲突的文件会做出标记(会产生xxx.rej文件,xxx为文件名称),查看产生的rej文件即可得知产生冲突的代码片段,对产生冲突的文件进行修改,完成后可以删除rej文件,接着执行
git add 冲突文件
git add 其它无冲突文件
最后执行:
git am --resolved
便大功告成
参考文章:
https://blog.csdn.net/liuhaomatou/article/details/54410361
http://www.fwolf.com/blog/post/448