修改工程记录技巧-如何做patch

在实际工程中常常涉及到代码修改的记录,很多时候在与同组成员交互时需要一种比较高效的方法来告知修改的地方。假设一种场景,双方都有个大工程文件列,且修改很大,需要同步修改进度,除了通过git管理外,也可以通过diff做patch来实现。此外,可以显式地看到整个目录做了哪些修改且可以直接给原文件打补丁,何乐而不为。

介绍一下diff命令常用选项

选项 含义
-u 输出统一内容的头部信息(打补丁使用)
-r 递归对比目录中的所有资源
-N 无文件视为空文件
-a 所有文件视为文本(包括二进制程序)

【生成patch】shell环境 - 指令 - 生成结果xxx.patch

1
diff -Nuar source/ Destination/ > test.patch

效果确实还可以

注意点

指令的source是原文件、Destination是目标文件;注意顺序,如果相反,无论你怎么patch都是把改好的变成原来的。

【使用patch】将原文件通过补丁变成目标文件

1
patch -p1 < ../RV_Core.patch

-px 代表路径,可能会出现一些找不到文件等问题基本都是路径有问题,可以将patch放在上一层然后执行上述指令或者直接放在路径下使用-p0

1
patch -Rp1 < RV_Core.patch
  • 【撤销】救命指令!!大家做patch的时候还是注意备份