有没有办法将diff中的单个Hunk应用到文件中?例如,假设我从文件A和B执行差异,并产生三个差异块,每个差异用...表示...
@@ -971,30 +977,28 @@
...(在统一差异的情况下)。然后我希望能够将差异输入stdin,并且要求补丁仅应用大块N.
手动方法是剪切和粘贴有趣的帅哥,但我不是那种解决方案。
答案 0 :(得分:11)
filterdiff可能会有所帮助。
它允许从一个/多个补丁文件中提取符合各种要求的补丁子集。例如,这里我们从文件unified_diff.patch
中提取适用于名称匹配为one_file.c
的文件的修补程序,仅提取到原始文件的第950到1050行:
filterdiff -i *one_file.c --lines=950,1050 unified_diff.patch
提取具体/范围的帅哥:
filterdiff --hunks=1,3,5-8,15 file.patch
从邮件中提取补丁:
filterdiff message-with-diff-in-the-body > file.patch
等
答案 1 :(得分:0)
一些GUI差异/补丁工具可以选择块甚至单独的行。我知道来自TortoiseSVN的TortoiseDiff可以这样工作。我想我已经看过windiff做了,但是因为我不得不使用它已经有一段时间了。
就命令行工具而言,我还没有看到任何能够满足你要求的东西。
答案 2 :(得分:0)
Emacs不仅可以智能地编辑差异(包括曾经有用的split-hunk操作),而且可以自己一次应用一个hunk(避免从编辑器切换到运行patch
)。