生成patch
git format-patch -1 commitid
合入patch
git am 0001-.patch
解决合入patch冲突
1. git Apply --reject 0001-.patch (强制把不冲突的文件先合并,有冲突的会生成.rej文件)
2..根据.rej这个文件中的修改去手动执行即可 ,解决完冲突要把.rej文件删除
3.git add
4.git am --continue
Patch其他命令使用说明
1.生成patch命令拓展
生成最近的1次commit的patch
git format-patch HEAD^
生成最近的2次commit的patch
git format-patch HEAD^^
生成最近的3次commit的patch
git format-patch HEAD^^^
生成两个commit间的修改的patch(包含两个commit. <r1>和<r2>都是具体的commit号)
git format-patch <r1>..<r2>
生成单个commit的patch
git format-patch -1 <r1>
生成某commit以来的修改patch(不包含该commit)
git format-patch <r1>
生成从根到r1提交的所有patch
git format-patch --root <r1>
2.合入patch命令拓展
将名字为0001-.patch的patch打上
git am 0001-.patch
添加-s或者--signoff,还可以把自己的名字添加为signed off by信息,作用是注明打patch的人是谁,因为有时打patch的人并不是patch的作者
git am --signoff 0001-.patch
将路径~/patch-set/*.patch 按照先后顺序打上去
git am ~/patch-set/*.patch
当git am失败时,用以将已经在am过程中打上的patch废弃掉(比如有三个patch,打到第三个patch时有冲突,那么这条命令会把打上的前两个patch丢弃掉,返回没有打patch的状态)
git am --abort
当git am失败,解决完冲突后,这条命令会接着打patch
git am --resolved
查看patch的情况
git apply --stat 0001-.patch
检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
git apply --check 0001-.patch