我正在尝试使用普通格式创建补丁然后应用它。尽管-n
和diff
都有patch
,-o
上有明确的文件输出patch
,但我收到错误:
patch: **** Only garbage was found in the patch input.
我该如何解决这个问题?在这种情况下,我无法使用统一或上下文补丁,因此这不是解决方案。
这是一个错误还是什么?编辑器格式似乎有用,出于某种原因:
$ 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
答案 0 :(得分:3)
根据diff
的{{3}},您没有使用-n
的常规差异格式,而是使用man page一个:
-n --rcs Output an RCS format diff.
要使用普通格式,您可以使用--normal
选项。
在RCS命令中,-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
标志,因为它们是两个命令的默认格式)