1,patch命令的安装
yum install -y patch
2,patch 文件的生成
[root@localhost test]# git diff 1.txt 2.txt > r.patch
3,打patch
[root@localhost test]# patch 1.txt < r.patch
或者[root@localhost test]# patch < r.patch
4,复原
[root@localhost test]# patch -R 1.txt < r.patch
或者[root@localhost test]# patch -R < r.patch
5,-p参数
-p参数决定了是否使用读出的源文件名的前缀目录信息,不提供-p参数,则忽略所有目录信息
-p参数比较的pwd(当前路径)和patch文件中的路径;
指定-p参数时需要考虑a/ b/即a/ b/也算一层; 忽略的是patch文件中的路径
第4步中的例子,不指定 -p 等同于 -p1,因为只有一层路径 a/ b/
要使pwd/ 和patch文件中的路径忽略对应层后 可以组合为对应的文件路径。
一般在需要打patch的文件里执行patch 指令;patch文件的路径不重要。
git diff release-1.10.3 release-1.12.2 > ../nginx_upgrade.patch
patch -p1 --dry-run < ../nginx_upgrade.patch(预览打补丁后会有哪些变化)
patch -p1 < ../nginx_upgrade.patch
回车y忽略不必要的文件
删除以.orig结尾的文件
find . -name *.orig | xargs rm
add正常的文件
git add ……..
参照以.rej结尾的文件手动修改对应的文件