Git Patches
当我们想把自己的成果发给别人 review 时,除了在 github 上提交 pull request,还有一种更加古老的方法, 那就是把自己的提交记录打包成 patch,并通过电子邮件发送出去。
比如,我们想把当前分支前三个提交记录打包成 patch,我们可以这样做:
$ git format-patch -3
0001-post-update-the-post-math-notation-markdown.patch
0002-test-comment-function.patch
0003-add-comment-function.patch
命令会生成三个文件,对应你的三次提交记录。值得注意的是,文件开头的数字和 提交记录的顺序是相反的,即 0003-add-comment-function.patch 实际上是你最近 的一次提交记录。所以你在下面用 git am 或 git apply 应用 patch 的时候,应该 从 0001 开始。
在你通过电子邮件发送给别人的后,他可以用 git am
或 git apply
两种方式来
把你修改的内容应用到他的分支上。这两个命令的区别是,git am
会自动生成一条
提交记录,相当于你使用了 git add
和 git commit
,而 git apply
则只会修改
相应的文件,并不生成提交记录。
补充一点,git rebase
的原理也与 patch 有关。当你 rebase 的时候,git 其实是
将当前分支与 rebase 分支不同的提交记录变成若干 patches,然后再将 patches 应用到
rebase 分支上。
以上。