Undo a git pull --rebase?

2020-06-04 12:31发布

问题:

I just ran

git pull --rebase

and forget to specify "origin". It looks like git pulled from all different branches. Is there a way to revert my repo from here to undo the pull?

Thanks

回答1:

After a git pull operation, ORIG_HEAD should point to the previous value of HEAD. You should be able to:

git reset --hard ORIG_HEAD

And be back where you started before the pull operation. You can run:

git show ORIG_HEAD

To see exactly where ORIG_HEAD is pointing prior to running the reset command.

An alternative solution would be to create a new branch based on ORIG_HEAD:

git checkout -b newbranch ORIG_HEAD

Verify that things look the way you expect, then delete the old branch and rename new branch.

Also see this question for a discussion of HEAD and ORIG_HEAD and alternate syntaxes for referring to the same thing.



回答2:

Use git reflog

You will see a whole bunch of commits HEAD that are from the past.

Safest is to checkout the HEAD you need in a new branch and continue from there

git checkout -b phew HEAD@{x} # fill in the number of the commit you need.


回答3:

Recovering from a borked/stupid/moribund rebase

Accidently I ran git pull origin master --rebase instead of git pull origin develop --rebase.

I just wanted to revert what happened after rebase and get back to the last commit. I did not push to the remote branch.

It was a big mistake and want to get out of the merge.

The fastest way out of the merge is git rebase --abort



标签: git