여기서 "-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

-p1?patch

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.

관련 정보