修补已编辑的文件,包含原始文件和新文件

时间:2018-03-18 05:23:17

标签: file

基本上我有三个文件:原始文件,编辑(由我)文件和新文件(编辑原始文件)。我需要将新文件中的更改应用到已编辑的文件中而不会丢失我的更改。我可以这样做吗?

注意:运行linux。

1 个答案:

答案 0 :(得分:0)

假设您有一个文本文件original_file

There is one true candidate
and it is A

您已将其复制到my_file并添加了一行 my_file所以它看起来像

There is one true candidate
and it is A
B would not cut it

现在您了解到original_file的所有者也对其进行了编辑,您已将新版本复制到new_file,看起来像

There is one true candidate
and it is C

幸运的是,更改并未添加您添加了自己的新行,因此可以轻松解决my_filenew_file之间的冲突。

使用diff命令创建补丁。通常使用选项-Naur。选项指定补丁文件的格式,并确保将输入文件视为文本。

diff -Naur original_file my_file > my_file.patch

现在,您使用new_file

将修补程序应用于patch
patch new_file my_file.patch

控制台输出类似于

patching file new_file
Hunk #1 succeeded at 1 with fuzz 2.

这会更新new_file,现在看起来像

There is one true candidate
and it is C
B would not cut it

默认情况下,还会创建文件new_file.orig,该文件是new_file的未更改备份副本。

失败时

Patch很好地尝试做出明显的改变,以解决微小的修改。有时会失败。有时会产生不一致的结果。

假设new_file

There is one true candidate
and it is C
B is also good 

将修补程序应用于此文件也会成功导致

There is one true candidate
and it is C
B would not cut it
B is also good 

这看起来并不一致。您有责任检查不一致性并在出现时进行修复。幸运的是,它们并不经常出现。