参考: https://blog.csdn.net/zygblock/article/details/53384862
diff和patch是 版本控制 git 的不可缺少的工具
diff 是用来比较 源文件( 目录) / 和 目标文件(夹)的 差异, 通常是用来比较 文本文件的, 一般不用来比较 二进制文件
diff的输出 是一种 patch格式的, 可以 把 输出结果 重定向保存为 foo.patch 文件 , 然后 供 patch命令 来使用, 所以, 通常 diff和 patch是 联合使用的
patch 是 根据 patch文件( 包含差异列表的文件, 即 difflisting文件) 来将 旧文件 (源文件) -> 打补丁/ 升级 为 新文件 (升级文件) 的程序
======================================
关于diff 主要是 要掌握它的 几种 输出格式:
- 使用 diff -y -W 50 old_file new_file 是 不用 normal的输出格式, 用 并排的方式,显示差异, -y 和-W 联合使用, -W == --width 指定列(栏)的宽度
- 更常用 的是 使用 diff -u file1 file2 的格式, 是 -u == -unified 即统一的格式, 将两个文件的 内容都输出在一起, 统一的输出. 用 ---(-) 表示第一个文件(源文件/旧文件) 用+++(+)表示第二个文件(新文件, 更新后的文件)
制作 补丁文件: diff -u file.old file.update > difflisting
给源文件 打补丁: patch -i difflisting -b file.old
-b的作用是 原来的file.old将被打补丁, 同时 源文件被保存一个副本 file.old.orig
patch -i difflisting -o file.new file.old
-o 表示原来的文件被打补丁成为 file.new, 而源文件 还是被保存不变.