Linux 添加带有差异文件的修补程序时出错

Linux 添加带有差异文件的修补程序时出错,linux,diff,patch,Linux,Diff,Patch,使用diff文件添加修补程序时遇到一些问题。 我使用两个C源以这种方式创建了diff文件: $diff gitrans.c.origin gifstrans > giftrans.diff 当我尝试使用diff文件创建修补程序时,我得到以下错误: $patch -p1 < giftrans.diff patch: **** Only garbage was found in the patch input. $patch-p1

使用diff文件添加修补程序时遇到一些问题。 我使用两个C源以这种方式创建了diff文件:

$diff gitrans.c.origin gifstrans > giftrans.diff
当我尝试使用diff文件创建修补程序时,我得到以下错误:

$patch -p1 < giftrans.diff
patch: **** Only garbage was found in the patch input.
$patch-p1

有人能帮我吗?我找不到解决方案。

您没有使用正确的语法。这样使用:

$diff -aNur gitrans.c.origin gifstrans > giftrans.diff
在哪里

-a , treats it as text
-N , treats absent files as empty, useful if you want
     just changes of different existing files but not 
     for new files
-u , output as unified. This is need to fix you problem
-r , recursively, useful if you want diff directories

我总是忘记选项,因此我只记得单词
aNur
。这很容易记住。

您应该使用统一的diff格式和给定的补丁语法

$diff -u gitrans.c.origin gifstrans > giftrans.diff
$patch < giftrans.diff
$diff gitrans.c.origin gifstrans > giftrans.diff
$patch gitrans.c.origin giftrans.diff

如果您一直使用其他人生成的“diff”文件,并且它是“普通”diff(即,不是“统一”(-u),也不是“上下文”(-c)diff),那么您仍然可以使用
补丁
,并选择
-n
(普通diff)。如果修补程序中有多个文件,则必须在修补程序应用过程中手动输入文件名。