git打patch方法
git format-patch (推荐)
适用于git的patch,包含diff信息,包含提交人,提交时间等 如果git format-patch
生成的补丁不能打到当前分支,git am
会给出提示,并协助你完成打补丁工作
对比分支生成patch
例:从master checkout 一个新分支修改然后与master对比生成patch。
$ git format-patch -M master //-M选项表示这个patch要和那个分支比对 $ git am 001-xxx.patch(不必重新commit)
将commit打包成patch
# 修改代码 $ vi drivers/bluetooth/btusb.c # 把代码添加到git管理仓库 $ git add . # 提交修改 $ git commit -m "some message" # 查看日志,获取到hash $ git log # 生成patch $ git format-patch -s 1bbe3c8c19
或者也可以
$ git format-patch HEAD^ # 最近的1次commit的patch $ git format-patch HEAD^^ # 最近的2次commit的patch $ git format-patch HEAD^^^ # 最近的3次commit的patch $ git format-patch HEAD^^^^ # 最近的4次commit的patch
测试,应用patch
# 检查patch文件 $ git apply --stat xxx.patch #查看是否能应用成功 $ git apply --check xxx.patch # 应用patch $ git am --ignore-space-change xxx.patch 注意这里的--ignore-space-change选项,如果是跨平台操作,必须加上,否则即使没有冲突的patch也会提交失败,因为diff的原理是比较修改 点前后的内容,如果行结尾符不一样也会导致失败。 所以可用这个解决没用冲突的patch am失败的问题(am fail no conflict patch)
git diff
生成标准的patch,只包含diff信息
git diff
生成的Patch兼容性强,可以用git apply --check
查看补丁是否能够干净顺利地应用到当前分支中。
例:从master checkout一个新分支修改然后与master对比生成patch。
$ git diff master > patch $ git apply xxx.patch(需要重新commit)
发表评论