一、patch使用方法
git apply xxxx.patch
git apply 0001-add-mt7621_zte_e8820s-support.patch
二、如何打patch
1、在源目录直接使用Linux自带的diff命令, git diff >
git diff > xxxx.patch
git diff > 001.patch
2、git format-patch
命令的基本语法是:
Copy Code$ git format-patch [<options>] <commit>...
其中 <commit>
可以是一个或多个 Git 提交记录的 SHA1 标识符或者引用(例如分支名或标签名)。该命令会根据指定的提交记录生成一个或多个以 .patch
或 .txt
结尾的补丁文件,并输出到标准输出或指定的输出文件中。
一般情况下,您可以使用 >
符号将输出重定向到一个文件中,例如:
Copy Code$ git format-patch HEAD~3 > my-patches.patch
这个命令将最近的三个提交记录转换成了一个包含三个补丁文件的文件集,所有的补丁都存储在 my-patches.patch
文件中。此外,您还可以使用多种选项和参数来自定义补丁文件的生成方式,包括文件名格式、输出目录、邮件格式等等
3、源文件对比修改,在编辑修改源文件之前,只需要保存一份我们要修改的源文件用于对比即可。
以kernel加载4G模块来举例,一般我们会在option.c中添加4G模块的VID,PID
第一,保存原有的option.c文件
第二,修改option.c,添加我们的4G模块的VID,PID
第三,重命名文件为option_new.c,此处主要是为了方便diff,编译时还是需要使用option.c文件名的
修改好了文件,下面 开始制作patch,执行一条指令即可:
diff -ruN option.c option_new.c > 999-kernel-option-add-new-dev.patch
diff -ruN a b > 001-libnftnl-add-fullcone-expression-support.patch
diff -ruN a b > 002-nftables-add-fullcone-expression-support.patch
diff -ruN mt7621_zte_e8820s.dts mt7621_zte_e8820s-1.dts > 001-mt7621_zte_e8820s.patch
4、指定文件打补丁
在 `target/linux/ramips/dts` 目录下成功新建了 `mt7621_zte_e8820s.dts` 文件,并且希望将其作为一个单独的补丁来提交,可以按照以下步骤操作:
a. 确保当前目录是 Git 仓库的根目录。
b. 运行 `git add target/linux/ramips/dts/mt7621_zte_e8820s.dts` 命令将该文件添加到暂存区中。
c. 运行 `git diff –staged` 命令生成新的补丁文件。该命令会将暂存区和上一次提交之间的差异输出到控制台。
d. 将补丁保存到一个新文件,比如 `0001-add-mt7621_zte_e8820s-support.patch`:`git diff –staged > 0001-add-mt7621_zte_e8820s-support.patch`
e. 确认补丁文件的内容和命名格式符合要求后,就可以将其发送给其他开发者进行 review 和合并。