有没有办法将diff中的单个Hunk应用到文件中?例如,假设我从文件A和B执行差异,并产生三个差异块,每个差异用...表示
@@ -971,30 +977,28 @@
Run Code Online (Sandbox Code Playgroud)
......(在统一差异的情况下).然后,我希望能够将该差异提供给stdin,并且要求补丁仅应用大块N.
手动方法是剪切和粘贴有趣的帅哥,但我不是在那种解决方案之后.
小智 11
filterdiff可能有所帮助.
它允许从一个/多个补丁文件中提取符合各种要求的补丁子集.例如,这里我们从文件中提取unified_diff.patch适用于名称匹配的文件的补丁one_file.c,仅限于原始文件的950到1050行:
filterdiff -i *one_file.c --lines=950,1050 unified_diff.patch
Run Code Online (Sandbox Code Playgroud)
提取具体/范围的帅哥:
filterdiff --hunks=1,3,5-8,15 file.patch
Run Code Online (Sandbox Code Playgroud)
从邮件消息中提取补丁:
filterdiff message-with-diff-in-the-body > file.patch
Run Code Online (Sandbox Code Playgroud)
等等
一些 GUI diff/patch 工具可以选择块甚至单独的行。我知道 TortoiseSVN 的 TortoiseDiff 可以这样工作。我想我见过温迪夫这样做过,但自从我不得不使用它以来已经有一段时间了。
就命令行工具而言,我还没有看到任何可以满足您要求的工具。