Linux命令行 - diff 和 patch

生成 patch

diff -ruN xxx_src xxx_dst > xxx.patch

参数:

  • -u,合并相同内容。如果两个文件相似度很高,那么上下文格式的diff,将显示大量重复的内容,很浪费空间。1990年,GNU diff率先推出了”合并格式”的diff,将f1和f2的上下文合并在一起显示。
  • -r,或–recursive,递归比较,比较子目录中的文件。
  • -N,或–new-file,文件A仅出现在某个目录中,预设会显示:Only in目录;文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。

应用 patch

patch [参数] <patchfile>

参数:

  • -p Num 忽略几层文件夹
  • -E 选项说明如果发现了空文件,那么就删除它
  • -R 取消打过的补丁。

如果使用参数-p0,表示从当前目录找打补丁的目标文件夹,再对该目录中的文件执行patch操作。 而使用参数-p1,表示忽略第一层目录,从当前目录寻找目标文件夹中的子目录和文件,进行patch操作。

产生补丁

1
diff -uN f1 f2 > file.patch

打补丁

1
patch -p0 < file.patch

或者

1
patch f1 file.patch

取消补丁

1
patch -RE -p0 < file.patch

或者

1
patch -RE f1 file.patch

参考文献

参考: