patch -p0
これらとそしての違いは何ですかpatch -p1
?
違いはありますか?
ベストアンサー1
パッチを生成する最も一般的な方法は、diff
コマンドまたはいくつかのバージョン管理に組み込まれているdiff
同様のコマンドを実行することです。時には2つのファイルを比較し、diff
次のように実行します。
diff -u version_by_alice.txt version_by_bob.txt >alice_to_bob.patch
これにより、1つのファイルに対する変更が含まれますが、ファイル名はまったく含まれていないパッチを受け取ります。パッチを適用するときは、パッチを適用するファイルを指定する必要があります。
patch <alice_to_bob.patch version2_by_alice.txt
通常、ディレクトリに含まれる完全なマルチファイルプロジェクトの2つのバージョンを比較します。一般的な呼び出しは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