Git undo rebase- how to rollback a rebase
In Git, how do undo git rebase if not happy with it?
Git doesn't have dry-run for rebasing. If I did a rebase and have not pushed it yet, how do I rollback to before, as if it never happened?
You can use the reflog to search out the first action before the rebase started then reset --hardback to that. e.g.
$ git reflog
b710729 HEAD@: rebase: some commit
5ad7c1c HEAD@: rebase: another commit
deafcbf HEAD@: checkout: moving from master to my-branch
...
$ git reset HEAD@ --hard
Now you probably should go back to before the rebase started.
To find the right place to reset to, you just pick the entry closest to top that doesn't start with "rebase".
Alternative approach
If the rebase is the only thing you have done on the branch, i.e. you have no unpushed commits/changes - then you could just delete the local branch with git branch -D and then check it out again:
$ git checkout my-branch
$ git rebase master
// not happy with the result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch
Or for a similar result, you could reset --hard to the origin branch:
$ git reset --hard origin/my-branch
If you probably did try this while you had other unpushed commits, then you'll have lost them.
In that case, just use the reflog approach above to jump back to the reflog entry where you made the commit(s).