patch工具入门
Linux中patch和diff工具,成对使用。patch也可以使用git diff生成的patch。
本文简单记录了patch的-p和-R选项的含义及使用。
本文测试目录结构如下:
.git仓库在test_patch目录下
image.png
txt1文件:
the first dir
txt2 文件:
the seconde dir
txt3 文件:
teh third dir
1、-p命令
该命令表示忽略几层patch文件中指定的目录后,开始查找要打补丁的目标文件;
下面以在dir2目录中txt2的patch文件为例,patch使用git diff生成。
修改后的txt2文件为:
the seconde dir
modify 1
patch文件为:
diff --git a/dir1/txt2 b/dir1/txt2
index 4d43002..d5ff5e6 100644
--- a/dir1/txt2
+++ b/dir1/txt2
@@ -1 +1,2 @@
the seconde dir
+modify 1
patch文件中指定的目录为 ''a/dir1/txt2''
如果-p指定为1,则从dir1目录开始寻找txt2文件,找不到dir1目录,则补丁失败;
即:
如果在test_patch目录下执行patch需指定-p为1,如果在test_patch/dir1/目录下执行patch需要指定-p为2.
在test_patch/目录下执行:
image.png
在test_patch/dir1/目录下执行:
image.png
2、-R指令
该指令,将会翻转使用diff生成patch的时候,前后比较文件的位置,该选项,可以起到去除补丁的效果;
即,先用patch正常打好补丁后,如果想把打的补丁去除掉,者可以使用刚才的指令加上-R选项,就可以去除掉刚才打的补丁了
实例如下:
image.png