Git undo partial changes to a file
git, merge, undo
Solution
There's another way to do this that doesn't require the patch file at all.
The problem happened going from `A` to `B`, so first revert the changes in `B` but don't automatically commit.
$ git revert --no-commit <commit hash of B>
The changes that `git revert` would do are staged. Unstage them.
$ git reset HEAD
Next, interactively go through `file.txt` and stage only the changes you want to keep.
$ git add --patch file.txt
Only the reverts you selected are now staged. Commit them.
$ git commit
Finally, clean up the unstaged leftovers from `git revert`.
$ git reset --hard
Problem
How do I undo a part of the changes applied to a file that happened a while ago. I have the following commits and the accidental changes happened between `A` and `B` to `file.txt`: ``` ...--A--B--... ``` I have a diff patch of the file in `file.txt-B-A.patch` which reverts all changes. However I only want to undo certain changes in `file.txt`, much like manually picking changes in a merge conflict. Is there a way to do so without modifying the patch file?