title: Merged Master into branch then committed and pushed changes to branch. How can this be undone without a force push?
body: <p>I made a mistake.</p>
  
  <p>I have a branch (<code>A</code>) that is branched off of <code>Master</code>. <code>Master</code> is ahead of <code>A</code> by quite a bit. I accidentally merged <code>Master</code> into <code>A</code> a few days ago and pushed. I noticed my mistake later that day, but wasn't sure how to fix it, so I attempted to add some feature flags to turn things off that shouldn't be enabled in <code>A</code> and pushed them. Later, I decided to try and revert the <code>A</code> branch to get rid of all of the <code>Master</code> commits. I went through all of the changes (about 100 files) and now <code>A</code> looks like it did before <code>Master</code>. My problem now, however, is that I can't merge <code>A</code> into <code>Master</code> without the merge trying to delete all of the changes that exist in <code>Master</code>. (ie, new files created in <code>Master</code> were removed in the revert for <code>A</code>, so now git wants to remove the files from <code>Master</code> if I try to merge <code>A</code> into <code>Master</code>.)</p>
  
  <p>How can I fix my monumental screwup and just get back to where I can do maintenance patches on <code>A</code> and merge with <code>Master</code> accordingly so that future versions don't lose the patches?</p>