是否有一个Linux命令或程序可以交互地打补丁到源代码中,将每个块都打印在屏幕上,并在应用到文件之前等待确认?
类似于git add -p
,但是从另一个.diff文件中获取更改?
虽然不是互动的,但另一个选择是手动编辑 .diff
文件并删除您不想要的任何更改。
如果您在emacs中打开一个diff文件并将编辑器设置为diff-mode
,您可以编辑补丁,并且emacs将尝试更新块标记。(Emacs会自动以diff-mode
打开.diff
文件。)
在进行更改后手动更新标记,请执行C-c C-w
来重新生成块。
逐个应用块,请执行C-c C-a
。要反向应用,请执行C-u C-c C-a
。您还可以使用M-x diff-tell-file-name
将它们应用到其他文件。
我发现patch original patch.diff
比patch < patch.diff
更可靠,并且使用diff -u
创建的补丁文件更容易处理。
更新 [5.21.21]:
C-c C-s
可以将 hunks 分割,对于手动编辑非常有用。有时候 C-c C-w
(diff-ignore-whitespace-hunk
) 并不会按照你的意图执行,所以最保险的方法是分割 hunks 并让 Emacs 自动更新头部。当保留行不变时,这一点尤其有用;只需将其分割为一个 hunk,并删除以移除更改。
add -p
жҳҜдёҖдёӘеӨ§еһӢPerlи„ҡжң¬($(git --exec-path)/git-add--interactive
)зҡ„дёҖйғЁеҲҶпјҢеӣ жӯӨеҫҲе®№жҳ“пјҲе—Ҝ...пјүдҝ®ж”№е®ғд»ҘиҜ»еҸ–е…¶д»–е·®ејӮгҖӮ - torek