Git之format Patch打补丁

如果某个项目的的版本库是在内网,其中的developer没有办法及时将自己的修改push到版本库中,但又急需他所修改的代码,我们这时候就需要用到format-patch命令生成补丁,我们只需要得到补丁,就能将修改push到版本库中。

对比分支生成patch

如果修改是一个单独的分支,这样做:

git checkout issu78
git format-patch -M master

这样会生成一个issu78对比master的补丁,得到补丁后这样做:

git am 001-xxx.patch

将commit打包成patch

假设我们需要将某次提交的内容打包成补丁,这样做:

git format-patch -s 1bbe3c8c19

或者这样做:

git format-patch HEAD^^^ \# 最近的3次commit的patch

测试、应用patch

在测试前确认一下修改的内容:

git apply --stat xxx.patch

会打印补丁中的内容,包含修改了那些文件,修改了多少行。然后,检查一下能否应用成功:

git apply --check xxx.patch

最后,应用patch:

git am -s < xxx.patch

标准补丁

最后,我们说明一下,在邮件列表中我们会常看到这样标准的patch,因为这种格式的patch兼容性强,生成的方式:

git diff master > patch #或者
git diff HEAD^^ > patch #或者
git diff D7DAE2 > patch

应用的方法同上。