Diff

打更新檔後如何撤銷?.rej/.orig 文件

  • June 7, 2018

案件如下。我有兩個文件: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 文件在第二遍被替換為已經損壞的更改。有任何想法嗎?

從原始文件製作備份副本總是一個好主意。

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

引用自:https://unix.stackexchange.com/questions/448380