Specifically screwing up rebase. It is recoverable, but very annoying.
WDYM? Typically git rebase --abort will "just work". If you have specifically done something really wrong, just look into git reflog and then git reset --hard to whatever commit you were before the rebase.
Pushing your commit without fetching
Git won't allow you to do that if you set up your server properly. It will force you to pull first. I have [pull] rebase = true in my settings so that it always rebases my commits instead of merging them, which makes for much cleaner history.
Continuing on a branch even after it was merged.
This generally shouldn't be a problem, you can just rebase the branch afterwards and it will be fine (the common commits will typically just be dropped).