The mighty `git-reflog` or how to undo a git rebase

Generally, whenever I have to undo a rebase I just reset my working directory to the origin remote and that works pretty well.

This one time I didn’t push my changes to the remote and did a rebase. Only then I realized i didn’t really want to rebase. Tough life right? I couldn’t even reset to origin now.

That is when I learned about the git reflog command/feature. git reflog is quite similar to git log but instead of logging commits, it logs changes to the HEAD. Whenever a reference to the head changes, it logs it and allows us to go back in time and undo things we should’ve rathar not done.

So, for future reference, I can always git reflog and then git rebase --hard HEAD@{n} to the n-th head.

Moral of the story, push before you rebase — अभिनाश

Thank you stackoverflow and git docs