Although not interactive, another option is to manually edit the .diff
file and remove any changes you don't want.
If you open a diff file in emacs and put the editor in diff-mode
you can edit patches and emacs will try to update the hunk markers. (Emacs will open .diff
files in diff-mode
automatically.)
To update markers manually after making changes do C-c C-w
to regenerate the hunk.
To apply hunks one by one do C-c C-a
. To reverse-apply do C-u C-c C-a
. You can also M-x diff-tell-file-name
to apply them to a different file.
I found patch original patch.diff
to be more reliable than patch < patch.diff
and patch files created with diff -u
to be easier to work with.
Information also documented here.
UPDATE [5.21.21]:
C-c C-s
lets you split up hunks which is very useful for manually editing. Sometimes C-c C-w
(diff-ignore-whitespace-hunk
) does not do what you intended, so the safest bet is to split the hunks and let emacs update the headers automatically. This is especially useful when keeping lines unchanged; just split into a hunk and delete to remove the change.