您的位置:首页 > 其它

diff 和 patch的组合使用

2010-06-24 11:32 363 查看
参考:
"Introduction: Using diff and patch (tutorial)" http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial
1. 一般的patch方式

生成patch >
diff originalfile updatedfile > patchfile.patch
还原 >
patch originalfile -i patchfile.patch -o updatedfile

2. 带上下文信息的patch方式

一般的patch方式生成的信息不带上下文信息,只带行信息。如果不小心选错了原始文件,patch后的结果被破坏也许还不知道,这样不安全。

生成patch >
diff -c originalfile updatefile > patchfile.patch

还原 >
patch -i patchfile.patch -o updatefile
这里没写出原始文件名,是因为patchfile.patch里面已经携带了。当然也可以不指定输出文件名,如果这样的话,原始文件直接被更新。

3. 目录及其文件的patch

生成patch >
diff -cr originaldirectory/ updatedirectory/ > patchfile.patch

还原 >
比如把orignaldirectory 和 patchfile.patch拷贝到一个目录下,运行:
patch -p0 -i patchfile.patch
其中 -p 用于告诉patch要去掉路径中多少'/'。

4. 恢复到原始文件
如果想恢复到patch之前,接上面的例子,可以运行下面的command:
patch -p0 -R -i patchfile.patch

5. unified format
只被GNU diff和patch支持,类似context format,但是更紧凑
比如生成kernel的patch方式,通常如下:
diff -Nur /patch/to/original/kernel /path/to/your/kernel > changes.patch
其中-N: Treat absent files as empty
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: