Git Patch

作者: holyhbw | 来源:发表于2017-05-16 11:51 被阅读0次

1. Background

Git init之后有一个主分支——master。

在我们本地git repertoty输入git branch -a之后可以看见所有分支信息。

在本项目中我们所在的分支为Driver_F620_DualCam,如图:

the initial status

当更新到版本V1后可以将此分支merge到master上:

merge to master

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


相关文章

网友评论

      本文标题:Git Patch

      本文链接:https://www.haomeiwen.com/subject/xhihxxtx.html