Reverting an interactive git rebase
Solution 1
If you have just done the rebase, you can try as mentioned here:
git reset --hard ORIG_HEAD
ORIG_HEAD
is previous state ofHEAD
, set by commands that have possibly dangerous behavior, to be easy to revert them.
It is less useful now that Git has reflog:HEAD@{1}
is roughly equivalent toORIG_HEAD
(HEAD@{1}
is always last value ofHEAD
,ORIG_HEAD
is last value ofHEAD
before dangerous operation).
If you have executed some operations since the rebase, the reflog can still help.
Solution 2
You can do "git reflog" and get back your old HEAD.
Zubin
Updated on June 04, 2022Comments
-
Zubin about 2 years
After completing a feature branch, during a
git rebase -i
I accidentally removed all my commits. I'm not completely sure but I suspect that instead of squashing my commits, I replaced the entire entry with a commit message.http://shafiulazam.com/gitbook/4_interactive_rebasing.html says:
The last useful thing that interactive rebase can do is drop commits for you. If instead of choosing 'pick', 'squash' or 'edit' for the commit line, you simply remove the line, it will remove the commit from the history.
My question is: is there a way to revert/undo this?
-
Zubin over 13 yearsThanks VonC -
git reflog
was the key. -
Alfredo Gallegos about 6 yearsPretty much a lifesaver, this really saved my butt.