I have a bunch of branches, each with different features. Usually I'll have some extra branch "not_master" which contains master+feature A like so:

(not_master) a--b--c--d--e---M--x--y--z (feature A) --h--i--j-/

Sometimes I want to unmerge feature A, but keep commits x,y,z in "not_master".

In other words, I would like this:

(not_master) a--b--c--d--e--x--y--z

I see that I can do a git revert -m 1 M which will add a commit to the end that reverts my changes, but I don't really want to do that since these commits haven't been published yet so adding more commits makes the history even harder to read.