打補丁
shell patch -打補丁,打補丁,打補丁。重要說三遍,但要怎麼打補丁?
> diff -u oldFile newFile > mods.diff
> patch < mods.diff
Why
直接修改不小心打錯字怎麼辦?
結合 diff
和 patch
指令,可以快速正確的修改。
How
a.txt
hello, world.
b.txt
hi, world.
// 製造差異檔
> diff -u old/a.txt new/b.txt > txt.diff
// --- old/a.txt 2022-08-31 03:41:03.896391024 +0000
// +++ new/b.txt 2022-08-31 03:41:25.650525481 +0000
// @@ -1 +1 @@
// -hello, world.
// +hi, world.
// 為檔案打補丁
> patch < txt.diff
// patching file a.txt
> cat old/a.txt
// hi, world.
// 再執行一次,則
// 回復修改
> patch < txt.diff
// patching file a.txt
// Reversed (or previously applied) patch detected! Assume -R? [n] y
// or 直接回復修改
> patch -R < txt.diff
// patching file a.txt
> cat a.txt
// hello, world.
patch
會依照差異檔中的檔名進行處理。
從目前目錄開始用 -p0
指示,這裡就是 old/a.txt
。
忽略第一層可以用 -p1
指示,這裡就是 a.txt
。
同理,也可以比較兩個目錄的差異。
> diff -Naur dir1 dir2 > dir.patch
-r
遞迴子目錄。
-a
將視為文件來處理
-N
指示處理新文件
只同步取用特定目錄
<<