Sometimes git reflog can save you lots of nerves. After interactive rebase you have noticed that something went wrong. With git reflog you can find the commit just before you started rebasing. Then you can reset hard to that position.

Did you know that you can also cherry-pick the changes you removed a few commits ago?

git log

6ae136a (HEAD -> rebase-test) Restoring selection in vim
a222353 git checkout current master
c81ed20 Using git commit --fixup for amending changes
42c7dd0 Update gems

Suppose that c81ed20 will be removed in the next step. A few days later you realized that you need that changes. You can find the changes, for example like this:

git reflog rebase-test@{3.days.ago}

Now is as simple as:

git cherry-pick c81ed20 # or any other commit hash

This protip has been written in 681 seconds