案件如下。我有两个文件:file1.c
,file2.c
ls
file1.c file2.c patch.diff
patch < patch.diff
...
x out of x hunk FAILED -- saving rejects to file file1.c.rej
(the same with file2.c)
ls
file1.c file2.c file1.c.orig file2.c.orig file1.c.rej file2.c.rej patch.diff
patch -R < patch.diff # I thought it will revert changes back
...
x out of x hunk FAILED -- saving rejects to file file1.c.rej
(again, the same with file2.c)
ls
file1.c file2.c file1.c.orig file2.c.orig file1.c.rej file2.c.rej patch.diff
现在我留下了损坏的文件,并且不知道如何将它们恢复。似乎 *.orig 文件在第二遍时被替换为已经损坏的更改。有任何想法吗?
答案1
从原始文件中制作备份副本始终是一个好主意。
patch
如果您使用 option调用,这可以自动完成-b
。
背景:如果没有.rej
文件,可以调用:
patch -R
反转补丁,但这在出现问题时不起作用。
请注意,如果启动file2.c.orig
时已存在该文件patch
,则该文件将被删除并替换为当前状态的备份副本。
如果您有这些.orig
文件,您可以轻松地将它们重命名为原始文件名以撤消补丁。
请注意,最好反转项目中所有文件的所有补丁,以防单个补丁失败。由于这需要.orig
所有修补文件的文件,因此建议使用
patch -b
如果您有这些.orig
文件,您可以调用:
for i in *.orig; do
base=`basename $i .orig`
mv $i $base
done