基本上我有三个文件:原始文件,编辑(由我)文件和新文件(编辑原始文件)。我需要将新文件中的更改应用到已编辑的文件中而不会丢失我的更改。我可以这样做吗?
注意:运行linux。
答案 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_file
和new_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
这看起来并不一致。您有责任检查不一致性并在出现时进行修复。幸运的是,它们并不经常出现。