http://www.cnblogs.com/tobeprogramer/archive/2013/04/28/3049561.html
https://blog.csdn.net/tao_627/article/details/52939175
1 关于Diff 和 patch 的理解
diff:是对两个集合的差运算
patch:是对两个集合的和运算
2. 关于Diff
diff A B > C
表达了C= A-B;A 表达了原始文件,B 表示修改后的文件。 C 表示补丁文件
由于历史原因,diff有三种格式:
* 正常格式(normal diff)
* 上下文格式(context diff)
* 合并格式(unified diff)
我们依次来看。
其中:
-c :更详细的格式,可以标识出不同环境的上下文。
-r 是一个递归选项,设置了这个选项,diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
-u 选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些。
3. 关于patch
打补丁
patch A C
得到了B 即A 转换为了B 文件。
补丁还原
patch -R B C
得到了A
参数说明:
-p0 选项要从当前目录查找目的文件(夹)
-p1 选项要忽略掉第一层目录,从当前目录开始查找。
-pN选项表示取消N层目录数
-E 选项说明如果发现了空文件,那么就删除它
-R 选项说明在补丁文件中的“新”文件和“旧”文件现在要调换过来了(实际上就是给新版本打补丁,让它变成老版本)