利用git am打patch - 单个文件打patch
1.单个文件打patch:
(1)检查patch文件:
git apply --stat 0001-test1.patch
(2)检查能够应用成功:
git apply --check 0001-test1.patch
如果有冲突,编辑patch解决冲突。比如:
(a) 报No such file or directory, 可以编译patch中的路径为正确路径;
(3)打patch:
git am 0001-test1.patch
可能产生冲突的地方,及修改:
可能产生冲突的地方:
(1) 路径名变了:
修改成对应的路径名
(2) 文件权限不对,修改patch中的文件权限
(3) 同一个文件中,有两个块,只需要修改一个块: 删除另一个块的修改。
(4) 块中的修改,只需要其中的一个处: 删除不需要的修改,并更正@@后块对应的新旧行号,增删未变更的内容
---------------
附录:
生成patch的方法:
git format-patch
$ 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
$ git format-patch <r1>..<r2> #生成两个commit间的修改的patch(包含两个commit. <r1>和<r2>都是具体的commit号)
$ git format-patch -1 <r1> #生成单个commit的patch
$ git format-patch <r1> #生成某commit以来的修改patch(不包含该commit)
$ git format-patch --root <r1> #生成从根到r1提交的所有patch
为什么使用git format-patch 和git am?
使用git format-patch获得的patch包含code修改以及commit信息。
优点:
1. 方便,涉及到多个文件的改动时,能够记录所有的改动
2. patch 包含 commit 信息。
3. 获取patch 灵活。
----------------