diff和patch是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上。在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算。在数学上我们知道:A-B = C,这样我们知道A、B、C中任意两个数就可以得出第三个数;因此这两个命令常用来制作补丁。
假设u-boot-2010.09(A)是官方下载解压缩后的源代码,而u-boot-2010.09-fl2440(B)是针对相应硬件(fl2440)做源代码修改后的代码。这时我们可以使用下面diff命令制作一个补丁文件u-boot-2010.09-fl2440.patch(C);
命令输入:diff -Nuar u-boot-2010.09 u-boot-2010.09-fl2440 > u-boot-2010.09-fl2440.patch
假设现在有A(u-boot-2010.09)和C(u-boot-2010.09-fl2440.patch)通过patch命令即可得到B(u-boot-2010.09-fl2440);
命令输入&#xff1a;patch -p0 <../u-boot-2010.09.patch
假设现在有B(u-boot-2010.09-fl2440)和C(u-boot-2010.09-fl2440.patch)通过patch命令即可得到A(u-boot-2010.09)&#xff1b;
命令输入&#xff1a;patch -R -p1 <../u-boot-2010.09.patch
注&#xff1a;1.-p0 选项要从当前目录查找目的文件&#xff08;夹&#xff09;。
2.-p1 选项要忽略第一层目录&#xff0c;从当前目录开始查找。
提示&#xff1a;一般对于官方提供源代码进行修改后的代码&#xff0c;我们一般使用补丁形式保存修改记录。这样我们通过补丁可以知道针对源代码具体进行了哪些修改&#xff0c;另外在分享源代码时也只需要将补丁传给其他人&#xff0c;然后他们从官方下载相应源代码后打上补丁即可。