Patch
修補參數-p0和-p1之間有什麼區別?
patch -p0
和有什麼區別patch -p1
?有什麼區別嗎?
創建更新檔最常見的方法是執行
diff
命令或一些版本控制的內置diff
命令。有時,您只是比較兩個文件,然後執行diff
如下:diff -u version_by_alice.txt version_by_bob.txt >alice_to_bob.patch
然後你會得到一個包含對一個文件的更改並且根本不包含文件名的更新檔。應用該更新檔時,您需要指定要將其應用到哪個文件:
patch <alice_to_bob.patch version2_by_alice.txt
通常,您要比較目錄中包含的整個多文件項目的兩個版本。一個典型的呼叫
diff
看起來像這樣:diff -ru old_version new_version >some.patch
然後更新檔包含文件名,在標題行中給出,如
diff -ru old_version/dir/file new_version/dir/file
. 您需要告訴從文件名patch
中去除前綴(old_version
或)。new_version
這就是-p1
意思:剝離一級目錄。有時,更新檔中的標題行直接包含文件名,沒有前導。這在版本控制系統中很常見;例如
cvs diff
生成看起來像的標題行diff -r1.42 foo
。然後沒有要剝離的前綴,因此您必須指定-p0
.在您正在比較的樹中沒有子目錄的特殊情況下,不需要任何
-p
選項:patch
將丟棄文件名的所有目錄部分。但大多數情況下,您確實需要-p0
或-p1
,具體取決於更新檔的製作方式。