在输入第 3 行找不到要修补的文件

15 diff patch

我使用diff上下文行数为 1(-c选项)的命令生成了一个补丁。我的补丁文件内容:

*** /home/sk/abc/def/src/klm/a.py 2015-05-18 16:25:50.348398554 +0530
--- /opt/abc/def/ghi/klm/a.py  2015-05-18 14:27:13.860503469 +0530
***************
*** 72,73 ****
--- 72,74 ----
              output, error, rCommand = "", "", ""
+             import subprocess
              rCommand = self.copyCmd % (self.executor_hostname, self.testId, self.testId)
Run Code Online (Sandbox Code Playgroud)

当我尝试使用这些命令应用补丁时,

cd /
patch -p0 < sg.patch
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出,

can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|*** /home/sk/abc/def/src/klm/a.py  2015-05-18 16:25:50.348398554 +0530
|--- /opt/abc/def/ghi/klm/a.py  2015-05-18 17:10:48.368670076 +0530
--------------------------
File to patch:
Run Code Online (Sandbox Code Playgroud)

为什么patch命令不把第二行的文件名作为要打补丁的文件?

小智 10

您需要在根目录中以绝对路径应用补丁,并应用-p0选项。另见这篇文章