是否有适用于Linux的命令或程序允许以交互方式修补源代码,在屏幕上打印每个块并等待确认,然后再将其应用于文件?
类似于git add -p
,但从另一个 .diff 文件中进行更改?
您始终可以在 shell/ruby/python 中编写脚本,逐行读取该文件并提示在文件签名之间添加差异。
它可以接受差异文件的名称作为参数,或者您可以放置两个哈希并在脚本中制作补丁。
更重要的是,您可以调用该脚本 git-command-name,将其放入您的 user/bin 文件夹中,git 会将命令名称识别为 git 命令。
另一方面(只是一个想法)您可以操纵 .diff 的创建吗?也许您可以使用格式补丁并在每次提交差异后应用停止?
虽然不是交互式的,但另一种选择是手动编辑.diff
文件并删除您不需要的任何更改。
如果你在 emacs 中打开一个差异文件并将编辑器放在diff-mode
你可以编辑补丁,emacs 会尝试更新 hunk 标记。(Emacs 会自动打开.diff
diff-mode
文件。
要在进行更改后手动更新标记,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
允许您拆分大块头,这对于手动编辑非常有用。有时C-c C-w
(diff-ignore-whitespace-hunk
)并没有按照您的预期进行操作,因此最安全的选择是拆分大块头并让emacs自动更新标头。这在保持线条不变时特别有用;只需拆分成一大块并删除即可删除更改。