翻译,原文:
http://www.scottro.net/qnd/qnd-diff-patch
1)找到diff, patch工具
which diff which patch
若没找到,可能没有添加到环境变量中,试试这个
for i in /bin /usr/bin /usr/local; do find $i -name diff find $i name patch done
能否找到
2)生成patch
比较新文件和源文件的差生成patch
diff -uN original_file new_file >patch.original_file
例如,自己修改的linux版本和原始版本作diff后的patch:
diff -uNr linux-2.4.19 linux-2.4.19-my_version >patch.linux-2.4.19-my_version
3)使用patch
把patch文件和需要打patch的文件放在同一目录下,执行
patch <patch_file
注意:需要打patch的文件必须是2)中的相同文件名。
如果要给整个文件夹打patch,需要加 -p1参数
patch -p1 <patch_file
比如上个例子中linux kernel的patch,你给了别人,别人可以在原始kernel上使用patch,而变成你的kernel代码。
patch -p1 <patch.linux-2.4.19-my_version
更多参考:
http://www.gnu.org/software/diffutils/diffutils.html http://www.gnu.org/manual/diffutils/html_mono/diff.html
================翻译完========================
通过man diff 查看上文中的参数含义
-u, -U NUM, --unified[=NUM]
output NUM (default 3) lines of unified context
-r, --recursive
recursively compare any subdirectories found
-N, --new-file
treat absent files as empty