3、可以去除补丁,恢复旧版本 [armlinux@lqm patch]$ patch -RE -p0 < test1.patch: K. M* x# {0 t, x y w" a& |3 b
patching file test0! V7 r! ~, R1 r) R' p( K
[armlinux@lqm patch]$ ls: [% O( K0 {, N) J3 H
test0 test1 test1.patch; S2 t- i t/ O, Q. l7 X! e$ H
[armlinux@lqm patch]$ cat test08 a2 d! D: y0 h; w% _+ X
1111112 {& L& h" X4 c& {
111111
8 o2 l% o. U1 d9 m0 }) T7 i( k/ w 111111
% c! @: Z! m+ ^! Y. z* G% ^+ M 二、为多个文件进行补丁操作 L) m9 e+ I# H* K& K- `
1、创建测试文件夹
- H+ O: v+ y0 W [armlinux@lqm patch]$ mkdir prj0
) X5 E5 [ ^2 T6 w: N. p$ Z [armlinux@lqm patch]$ cp test0 prj0
$ {. L4 K! j) N+ z4 P0 @" [ [armlinux@lqm patch]$ ls
6 s/ Z( y, v, T& `7 F* B6 r prj0 test0 test1 test1.patch
/ L$ h' H- o3 _0 w: [1 J; \ [armlinux@lqm patch]$ cd prj0/
3 W( Z) `8 R+ m1 D5 ~ [armlinux@lqm prj0]$ ls/ _3 M3 D% ~ F8 f" D
test0
0 G% z9 v. U" Y1 O* } [armlinux@lqm prj0]$ cat >>prj0name prj0/prj0name7 f7 j9 ~: C' C3 z& e
> --------
' ~/ U2 F4 }. r) f > EOF# D `" M! Q7 \9 m; J- U
[armlinux@lqm prj0]$ ls4 @* g0 A# C7 _, G
prj0name test0
+ a% D) |& I5 U' r+ |% _0 p3 V [armlinux@lqm prj0]$ cat prj0name- n, A- d7 b* }2 s% o4 T
--------
. j% X: I# n" g9 I prj0/prj0name$ F( [/ [2 I/ W& H) `( g- _
--------
) ^4 D9 N$ A3 {6 K7 Q [armlinux@lqm prj0]$ cd ..
, g% {9 {1 g- \5 x8 g8 q3 T [armlinux@lqm patch]$ mkdir prj1: z/ u; ?; B4 U: ~1 X: o/ Y) V6 i* u
[armlinux@lqm patch]$ cp test1 prj1
; O4 R/ f# ]; I) {' V+ q9 d [armlinux@lqm patch]$ cd prj1! H% ~ V `& d
[armlinux@lqm prj1]$ cat >>prj1name prj1/prj1name$ B7 S7 m4 q* d/ I! b7 }+ h
> ---------
& `7 u: o# Z6 d9 h > EOF
" o! m# W* R- g! d) f' p& G% f) O2 c [armlinux@lqm prj1]$ cat prj1name
/ `2 p7 i9 M& w# t, s4 [ ---------% y+ v/ h! C- `3 l
prj1/prj1name9 Z1 o; ^+ K5 w9 r' z
---------; f$ N* c+ C2 v. t
[armlinux@lqm prj1]$ cd ..
; |% e) n/ N4 |8 k& m" A4 w 2、创建补丁0 I7 _( L u: c& ^4 @! c
[armlinux@lqm patch]$ diff -uNr prj0 prj1 > prj1.patch+ z" C, R1 w! H9 S# j( n. ~
[armlinux@lqm patch]$ more prj1.patch0 g- Y% Y4 [0 g; M0 H
diff -uNr prj0/prj0name prj1/prj0name
f- [3 N; W6 l! D --- prj0/prj0name 2006-08-18 09:25:11.000000000 +08008 K: F7 l3 f& C* a8 l
+++ prj1/
: G/ ]! z2 F: U, j" i prj0name 1970-01-01 08:00:00.000000000 +0800: T+ {1 m8 ?' h3 i1 g, i! u3 S- Z& m
@@ -1,3 +0,0 @@! ]( l1 w$ T0 b4 @
---------2 l/ z t+ t2 P
-prj0/prj0name+ Y6 E' i; a S3 m" d
---------
5 }# V. g, A* c5 ~- N1 ` j diff -uNr prj0/prj1name prj1/prj1name9 ?* ?* X3 l" E% H0 E* s4 f! k
--- prj0/prj1name 1970-01-01 08:00:00.000000000 +0800
: j! ]% |' h& P$ [ +++ prj1/prj1name 2006-08-18 09:26:36.000000000 +0800# v4 L. k9 `' ~* H; s H- g" B
@@ -0,0 +1,3 @@) i, K$ k! x% Y3 E/ B
+---------
# \- Q# C! @' M+ m9 v _/ S! B) X +prj1/prj1name
0 A9 a: I. h5 | +---------
# \" o0 S* i0 X diff -uNr prj0/test0 prj1/test0
* R) \6 }$ B5 J4 G# h --- prj0/test0 2006-08-18 09:23:53.000000000 +0800
5 ]2 X* `# z+ E! k! E7 ]8 H0 C +++ prj1/test0 1970-01-01 08:00:00.000000000 +0800
* e' J" i* X- s @@ -1,3 +0,0 @@
8 G0 l& F3 |& M# v -111111& _1 x, r: N9 m& x3 f
-111111# e0 r, Q4 ~ s1 N0 ^ T
-111111
- j7 _9 a w+ ^0 Z; I( y: w diff -uNr prj0/test1 prj1/test1( T1 n1 u( x' U6 A3 U
--- prj0/test1 1970-01-01 08:00:00.000000000 +0800
$ Y B0 d9 C; _3 B4 e. ]) { +++ prj1/test1 2006-08-18 09:26:00.000000000 +0800
! e0 o1 C) m# _' Y+ K( d$ Z# a @@ -0,0 +1,4 @@
4 M2 i7 Y$ x$ z; }7 _. k3 m* q4 T +222222
: S1 X; Q! i+ B2 h +111111* m5 {4 w+ s+ w( M8 `6 Y
+222222
. y; I% }& N P& j. U; N" J; S I +1111118 {; W- P, M8 P$ F( x0 `
[armlinux@lqm patch]$ ls6 f- @3 I/ q0 H7 t* c
prj0 prj1 prj1.patch test0 test1 test1.patch: p. C3 b: N7 }1 o* ^$ `
[armlinux@lqm patch]$ cp prj1.patch ./prj0. g5 ^, N- N, I$ }- r' X/ r) K' u
[armlinux@lqm patch]$ cd prj0
/ ^5 `/ R+ n: d [armlinux@lqm prj0]$ patch -p1 < prj1.patch/ N* i6 {; _+ `* f, M
patching file prj0name
x- c/ m3 D. o$ r patching file prj1name
( ~9 Z7 X6 t# Z7 {- t% O. ?7 I patching file test0* }0 }5 q# i% F, H0 f6 n8 O3 w
patching file test1+ G! ]2 W" b! a7 q3 T
[armlinux@lqm prj0]$ ls
. B7 Z& ~. i, w' o! v prj1name prj1.patch test1, M( d1 X; l6 d K: m( o
[armlinux@lqm prj0]$ patch -R -p1 < prj1.patch
& a+ D9 D$ U' F9 }$ _8 U) ` patching file prj0name7 c8 s6 U2 r; t7 p" y( E$ @. K
patching file prj1name; F$ g, p0 L. D3 }5 Q5 n* o% a$ |' X$ K
patching file test0
; l) F0 }5 \2 p" q6 v7 G2 i1 {( @ patching file test1
- b2 ~( m1 I+ x) h: I, P) E [armlinux@lqm prj0]$ ls5 ~! o* ?( C" _% H
prj0name prj1.patch test07 H+ t0 Y- \9 r& n7 \' j: A
-------------------) k! `% F9 d" r7 {2 X* m& F: t$ J1 j
总结一下:; R/ R; K& e% y! R
单个文件
( t# z) g& H) p3 J( n diff –uN from-file to-file >to-file.patch
& P3 |* c( A: j) ^, f patch –p0 < to-file.p5 Z+ @ B7 P M9 e! F, D: Y6 f
atch
. f3 c* _2 A$ s& ] patch –RE –p0 < to-file.patch- Z6 m+ j5 u+ x$ {0 d$ b% t
多个文件! w' D! v X u9 L2 |
diff –uNr from-docu to-docu >to-docu.patch# W& L6 v6 U7 {: B; Z* R" W
patch –p1 < to-docu.patch
+ H3 e3 B/ F9 q2 B- [$ x" W patch –R –p1 reject
0 ]2 W& O# E8 P 然后可以查看reject的内容了。 |