手动合并两个文件,我想通过做合并两个文件中的以下内容:使用DIFF
- 输出两个文件的差异到一个临时文件,并
- 手动选择我想要的行复制/保存。
这里的问题是,diff -u
只给我一个上下文的文件行,而我想输出统一格式的整个文件。
有没有什么办法比较可以做到这一点?
手动合并两个文件,我想通过做合并两个文件中的以下内容:使用DIFF
这里的问题是,diff -u
只给我一个上下文的文件行,而我想输出统一格式的整个文件。
有没有什么办法比较可以做到这一点?
“我想以统一的格式输出整个文件。diff有没有办法做到这一点?
是的。
diff -U 9999999 file1.txt file2.txt > diff.txt
这应该可行,只要你的文件长度少于1000万行。
一种选择可能适合该法案对你来说,
sdiff
:并排侧DIFF文件。
sdiff -o merged.file left.file right.file
一旦出现,它会提示你你想从哪个文件保持什么线路。点击?
,然后enter
获得一点帮助。还有man sdiff
同详细商品。
(在我的发行,这些都打包在“diffutils的”包[Fedora的,CentOS的])
如果您需要自动化的过程中,你可能会想尝试UTIL merge
,这将标志着冲突文件。但是,这可能会让你回到原点。
简单的答案是使用-D标志合并文件并用C风格#ifdef语句包围差异。
从文档:
$ diff -D NEWSTUFF file1 file2 > merged_file
我平时则只需打开该合并的文件在编辑器中,并通过手动来解决合并冲突:
-D NAME --ifdef=NAME
Output merged file to show `#ifdef NAME' diffs.
您可以按如下方式使用它。
您也可以使用选项输出ed脚本等
您可以合并/使用两个文件合并与差异 -
diff --line-format %L file1 file2
我知道很多人喜欢在使用vim diff模式来做到这一点,并有几个插件,使三个缓冲区(旧的,合并,'新')更好地工作。 – demure
有什么问题?只需删除不想要的补丁部分,然后修补该文件即可。另请注意[git cherry picking](https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html)。这正是你想要做的 – hek2mgl