I'm in a bit of a pickle.

I started development on a fork of a repo a few months ago. I made some changes. I was about to push my code back to the master as a pull request, but I realized there were quite a few changes in the meantime...

So, [following the instructions at Github](https://help.github.com/articles/fork-a-repo) under "Pull in Upstream Changes" I tried:

```
$ git remote add upstream ...  # savon/httpi
$ git fetch upstream
$ git merge upstream/master
$ git push origin/master       # coldnebo/httpi

```

However, now my fork is rather messy. I'm still rather a novice with git, so instead of trying to guess what the terminology is I'll simply show you what I got and what I expected:

* wanted this: (Showing 7 changed files with 112 additions and 5 deletions.)
<https://github.com/savonrb/httpi/pull/59/files>

This is the diff I want. Is there any way to rebase/revert and do this without losing my changes?

* got this: (324 commits covering nearly the entire project plus 4 new branches... OUCH!!)
<https://github.com/coldnebo/httpi/commits/master>

what a mess.

maybe `git pull` would have been better?

It's not many changes, so if it's unrecoverable I can always manually diff and remaster it, but I'm looking for the "right way" to do this in the future.