Linux下Patch的应用和制作方法介绍
1、准备测试文件
[root@lihao work]$ cat test_old
test old
[root@lihao work]$ cat test_new
test new
2、使用diff创建补丁test.patch
[root@lihao work]$ diff -uN test_old test_new > test.patch
【注:因为单个文件,所以不需要-r选项。选项顺序没有关系,即可以是-uN,也可以是-Nu。】
[root@lihao work]$ ls
test_old test_new test.patch
3、patch文件结构
[root@lihao work]$ cat test1.patch
--- test_old 2012-05-01 22:44:05.000000000 +0800
+++ test_new 2012-05-01 22:35:22.000000000 +0800
@@ -1 +1 @@
-lihao old
+lihao new
说明:
补丁头:
补丁头是分别由---/+++开头的两行,用来表示要打补丁的文件。---开头表示旧文件,+++开头表示新文件。
块:
块是补丁中要修改的地方。它通常由一部分不用修改的东西开始和结束。他们只是用来表示要修改的位置。他们通常以@@开始,结束于另一个块的开始或者一个新的补丁头。
块的缩进:块会缩进一列,而这一列是用来表示这一行是要增加还是要删除的。
块的第一列
+号表示这一行是要加上的。
-号表示这一行是要删除的。
没有加号也没有减号表示这里只是引用的而不需要修改。
4、patch文件的使用
[root@lihao work]$ patch -p0 < test.patch
patching file test_old
[root@lihao work]$ cat test_old
test new
5、恢复被patch过的文件
[root@lihao work]$ patch -re -p0 < test.patch
patching file test_old
[root@lihao work]$ cat test_old
test old