ここで「-p1」が「パッチ」なのはなぜですか?

ここで「-p1」が「パッチ」なのはなぜですか?

コミットでファイルの変更を元に戻すには、次から始めます。https://stackoverflow.com/a/2620822/156458

#!/bin/bash

function output_help {
    echo "usage: git-revert-single-file <sha1> <file>"
}

sha1=$1
file=$2

if [[ $sha1 ]]; then
git diff $sha1..$sha1^ -- $file | patch -p1
else
output_help
fi

なぜ-p1patch

git diff $sha1..$sha1^ -- $file | patch -p1

ありがとうございます。

ベストアンサー1

偽のディレクトリとそのパッチがgit diff追加されたので、スキップする必要があります(そうです)。これは、ファイルシステムに存在しない情報(比較されるファイルが同時に存在しない)を示すために行われます。abpatch-p1git

diff --git a/README b/README
index ce01362..a1e6cf9 100644
--- a/README
+++ b/README
@@ -1 +1,2 @@
 hello
+Tim

現在ディレクトリにあるReadmeファイル。diff生産します

--- README.orig 2017-04-07 20:39:50.843962430 +0200
+++ README      2017-04-07 20:39:56.284108455 +0200
@@ -1 +1,2 @@
 hello
+Tim

(元のコピーを別の場所に保存するとします。)ここではディレクトリがありません(ファイルが現在ディレクトリにあるため)。

後者のパッチはそのまま適用されますpatch。前者の場合、各パスの最初の要素を削除する必要があるため-p1

おすすめ記事