Subject: Recovering from an aborted git-rebase?

From: Steven Grimm <[email-masked]>
Date: Tue, 09 Jan 2007 15:20:33 -0800

Got this from one of the other people here who's using git. Luckily he 
was able to restore his repo from a filesystem snapshot, so no permanent 
harm done, but what's the pure-git way to recover from this? Are the 
revisions in question really gone?

---
I have 3 branches:
master
fql
fql-new
master is basically just the same as remotes/git-svn, fql is a bunch of
changes on top of that, and then fql-new is a new version of FQL so it makes
changes on top of the changes in fql (with the intention being to make it
easy to jump back if I didn't wind up liking the new version).
unfortunately perhaps I made it too easy, as now fql and fql-new are
identical and I can't get the additional set of changes back for fql-new.

Generally when I want to sync up to SVN I just fetch it in master and then
rebase everything to its parent branch - basically my goal being to get git
show-branch to look the same as it did before the fetch.  This time I did
the fetch command in fql-new instead of master, which I'm pretty sure I've
done before with no real harm done.  Anyway, here's what I did:
(in fql-new branch)
dev005:~/www-git$ git svn fetch
<pulls in the usual updates>
dev005:~/www-git$ git rebase fql
Current branch fql-new is up to date.
dev005:~/www-git$ git checkout master
dev005:~/www-git$ git rebase remotes/git-svn
First, rewinding head to replay your work on top of it...
HEAD is now at a5074e5... Fix IE6 display bug on photo_comments
Fast-forwarded master to remotes/git-svn.
dev005:~/www-git$ git checkout fql
dev005:~/www-git$ git rebase master
<works normally, lots of output spew>
dev005:~/www-git$ git checkout fql-new
dev005:~/www-git$ git rebase master
First, rewinding head to replay your work on top of it...
HEAD is now at a5074e5... Fix IE6 display bug on photo_comments
*********
at this point I think to myself "oops, I meant to rebase to fql, not to
master" and press ctrl+c
*********
dev005:~/www-git$ git rebase fql
First, rewinding head to replay your work on top of it...
HEAD is now at 7b49c62... split up some fql/fields/ files to more closely
match the actual tables we have
Fast-forwarded fql-new to fql.
******
notice that it doesn't apply any changes on top of fql and doesn't output
any spew here
*******
dev005:~/www-git$

and just like that, now all those changes from fql to fql-new are totally
lost.  git log and git show-branch show no trace of them.