Note: before doing rebases etc. I'd advise to push your current tree to a separate branch that you can always restart from, to avoid risking losing everything. There are ways to restore things, but it's way easier to just keep a branch on the side where you know your changes are safe.
Samuel