关于 diff 和patch

参考: 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, 而源文件 还是被保存不变.

特别要注意的是, 打补丁一定要注意 是给 谁 打补丁, 给哪个文件 打补丁, 千万不要把 目标文件搞反了, 否则就把更新的文件变成 原来的 旧文件了, 而且如果 要打多个补丁, 一定要注意 打补丁的顺序

猜你喜欢

转载自www.cnblogs.com/bkylee/p/10295489.html