Say I'm merging from upstream with 100 changed files, but I only get two conflicts. If I manually resolve those, the changes I made in the process is actually lost in a large merge diff. What I'm trying to do is to separate those manual changes from anything else that could merge without conflict. > What would the "clean" (by your definition) result have in that > block of contents that actually has a conflict? Do you mean to say > "Pick our version and ignore theirs in the blocks where the changes > conflict"? If so perhaps -Xours merge strategy option that the > recursive backend offers is what you are looking for? That's actually what I first tried. But when I use -Xours, I can't run `git merge <previous>` again to reproduce those conflicting hunks - because the resulting commit is deemed to be in sync with both parents. As a result, all the upstream changes are now overridden in this side branch.