1. Background
Git init之后有一个主分支——master。
在我们本地git repertoty输入git branch -a
之后可以看见所有分支信息。
在本项目中我们所在的分支为Driver_F620_DualCam,如图:
![](https://img.haomeiwen.com/i6052532/854c988da71cc2ee.png)
当更新到版本V1后可以将此分支merge到master上:
![](https://img.haomeiwen.com/i6052532/ff449e7f576dd0c3.png)
2. Patch
对Driver_F620_DualCam相对于master的修改打Patch
-
在Driver_F620_DualCam分支上打出在master分支基础上的patch
git format-patch master //这里master可以替换为其他分支
此分支上每一次的commit都会相应的生成一个patch或者你只需要最近某几次commit的patch:
git format-patch HEAD^ //patch最近一次的commit
git format-patch HEAD^^ //patch最近两次的commit
- 应用patch
例
$ git am 0001-0001-patchTest-first.patch
$ git commit -a -m "patch success" //此句相当于add + commit
应用所有生成的patch
//例如你的patch均放在目录: ~/xx/yy 中
$ git am ~/xx/yy/*.patch
//此命令会按照patch生成的顺序一一合并
-
错误处理❌
(1).
当某一次apply patch出错之后,再次apply patch会出错
如fatal: 之前的变基目录 .git/rebase-apply 仍然存在,但却提供了 mbox。
这是因为错误的提交导致git内部的数据出现了错误,因此继续提交patch就会报错。
解决:git am --abort [或 rm -rf .git/rebase-apply]
将git的状态恢复到之前状态。(2).
patch merge 冲突
方法1: skip xxx.patch
方法2:
//先修改发生冲突的文件
$ vim xxfile
$ git apply xxx.patch
$ git add xxfile
$ git am --resolved
网友评论