我试图使用正常的格式来创build一个补丁,然后应用它。 尽pipe-n
在diff
和patch
,并且在patch
上显式输出了-o
,我得到的错误是:
patch: **** Only garbage was found in the patch input.
我该如何解决这个问题? 在这种情况下,我不能使用统一或上下文补丁,所以这不是一个解决scheme。
这是一个错误还是什么? 编辑器格式似乎工作,出于某种原因:
$ echo a > a.txt $ echo b > b.txt $ diff -n a.txt b.txt > ab.diff $ patch -n -o a.txt a.txt ab.diff patch: **** Only garbage was found in the patch input. $ diff -e a.txt b.txt > ab.diff $ patch -e -o a.txt a.txt ab.diff $ diff a.txt b.txt $
这是在Linux Mint 16,与:
$ diff --version diff (GNU diffutils) 3.2 $ patch --version GNU patch 2.7.1
根据diff
的手册页 ,你不使用普通的差异格式与-n
而是RCS之一:
-n --rcs Output an RCS format diff.
为了使用正常的格式,你可以使用--normal
选项。 在patch
命令中, -n
指定了正常模式。 所以这不是一个错误,更多的是一个不愉快的命名约定。
$ echo a > a.txt $ echo b > b.txt $ diff --normal a.txt b.txt > ab.diff $ patch --normal a.txt ab.diff $ diff a.txt b.txt $
(你可以避免--normal
标志,因为它们是这两个命令的默认格式)