Thinking_Out_Loud

git中生成和使用patch

2018-10-24

一个比较奇特的情景:有两个本地仓库A和B,现在需要将其中一个仓库A的几个提交应用到另一个仓库B上。
有一种思路是使用git的cherry-pick

  1. 首先在B的远程仓库地址中添加A;
  2. 将A中对应的分支fetch到B中;
  3. 在B里使用cherry-pick应用A的提交。

但我在这里要记录另一种方法。

生成patch文件

最直接的,生成从commitBar(不包含)开始到最新提交的patch:

1
> git format-patch commitBar

生成的patch文件使用commit message命名,并且使用自动生成的序号做前缀来排序。

生成由最初的提交开始到commitBar的patch;

1
> git format-patch --root commitBar

此外还有更多选项,详见文档。

应用patch文件

应用patch更简单:

1
> git am patch/*.patch

出现冲突等会提示错误,这时按照提示处理后继续就可以了。

参考资料

  1. https://git-scm.com/docs/git-format-patch