diff和patch 打补丁

在Linux环境下,有两个工具用来给project打补丁,即diff和patch

diff

        diff具有比较功能。可以使用man命令查看其使用方法。
  1. NAME
  2.        diff - compare files line by line
  3. SYNOPSIS
  4.        diff [OPTION]... FILES
常用选项:
        -r 是一个递归选项

-N 确保命令正确执行,文件不存在视为空

-u 使用统一格式


patch

       patch 用来打补丁。
  1. NAME
  2. patch - apply a diff file to an original
  3. SYNOPSIS
  4. patch [options] [originalfile [patchfile]]
  5. but usually just
  6. patch -pnum <patchfile

  -pnum:
    -p0 根据补丁中完整路径查找要打补丁的文件
    -p1忽略第一层目录
    ……

简单的例子

源文件
  1. ./file1.c
  2. #include <stdio.h>
  3. int main()
  4. {
  5. printf("This is version 1! ");
  6. return 0;
  7. }

新文件:
  1. ./file2.c
  2. #include <stdio.h>
  3. int main()
  4. {
  5. printf("This is version 2! ");
  6. return 0;
  7. }

比较两个文件,生成patch
  1. $ diff -uN file1.c file2.c >> file.patch
打上补丁:
  1. $ patch -p0 < file.patch
此时file1.c的内容变变成file2.c的内容


如果两个文件在不同目录,比如一个在remote,一个在local目录
  1. $ diff -uN Remote/file1.c Local/file2.c >> file.patch
  2. //在file.patch目录下
  3. $ patch -p0 < file.patch












    
原文地址:https://www.cnblogs.com/Windeal/p/4284673.html