Linux檔案打補丁

SeanOY發表於2019-03-30

(最強的武器就是打補丁 ^ ^)

假如有1.c和2.c
在這裡插入圖片描述
其中2.c為高版本檔案,1.c為低版本檔案
我們想要用2.c檔案替換掉1.c檔案中內容
可以用命令diff 1.c 2.c > test.patch
來生成補丁包
在這裡插入圖片描述
其中patch檔案中 '<'代表的是後面要刪除的內容,而 '>'代表的是後面要增加的內容。
然後是"1,3c1,3"的意思

為了方便理解我再生成一個補丁包
在這裡插入圖片描述對比一下"2c2,3",可以發現這句話的意思就是刪除第一個檔案(舊版本)的第2行,在後面增加另一個檔案(新版本)的第2到3行。所以上面的"1,3c1,3"代表的是刪除第一個檔案的第1到3行,在後面增加第二個檔案的第1到3行咯。

接下來是打補丁的操作
用命令 patch -p0 1.c(想被打的檔案) < test.patch(補丁)
在這裡插入圖片描述
在這裡插入圖片描述
看看那結果是不是和預期一樣捏。

另外還有一個反向打補丁的操作(反打的意思嗎哈哈)
patch -Rp0 1.c < test.patch (R means : reverse)

在這裡插入圖片描述
在這裡插入圖片描述
我的理解是還原打補丁前的檔案,將< >這兩個符號方向調換,那不就是負負等正嗎。

我覺得這打補丁用在大量需要修改檔案的專案中有奇效啊。

相關文章