How to undo a git pull?

GitUndoPull

Git Problem Overview


I would like to undo my git pull on account of unwanted commits on the remote origin, but I don't know to which revision I have to reset back to.

How can I just go back to the state before I did the git pull on the remote origin?

Git Solutions


Solution 1 - Git

Or to make it more explicit than the other answer:

git pull 

whoops?

git reset --keep HEAD@{1}

Versions of git older than 1.7.1 do not have --keep. If you use such version, you could use --hard - but that is a dangerous operation because it loses any local changes.


To the commenter

> ORIG_HEAD is previous state of HEAD, 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 to ORIG_HEAD (HEAD@{1} is always last value of HEAD, ORIG_HEAD is last value of HEAD before dangerous operation)

Solution 2 - Git

git reflog show should show you the history of HEAD. You can use that to figure out where you were before the pull. Then you can reset your HEAD to that commit.

Solution 3 - Git

This worked for me.

git reset --hard ORIG_HEAD 

Undo a merge or pull:

$ git pull                         (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard                 (2)
$ git pull . topic/branch          (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD       (4)

Checkout this: HEAD and ORIG_HEAD in Git for more.

Solution 4 - Git

Find the <SHA#> for the commit you want to go. You can find it in github or by typing git log or git reflog show at the command line and then do git reset --hard <SHA#>

Solution 5 - Git

to undo git pull

git reset --hard HEAD^

takes your local repo back to previous commit state. And if any new files are downloaded as a result of git pull they will be listed as untracked files, and you can clean them up using

  git clean -fd

Solution 6 - Git

From https://git-scm.com/docs/git-reset#Documentation/git-reset.txt-Undoamergeorpullinsideadirtyworkingtree

> Undo a merge or pull inside a dirty working tree > > $ git pull (1) > Auto-merging nitfol > Merge made by recursive. > nitfol | 20 +++++---- > ... > $ git reset --merge ORIG_HEAD (2) > > Even if > you may have local modifications in your working tree, you can safely > say git pull when you know that the change in the other branch does > not overlap with them. > > After inspecting the result of the merge, you may find that the change > in the other branch is unsatisfactory. Running git reset --hard ORIG_HEAD > will let you go back to where you were, but it will discard > your local changes, which you do not want. git reset --merge keeps > your local changes.

See also https://stackoverflow.com/a/30345382/621690

Solution 7 - Git

Even though the above solutions do work,This answer is for you in case you want to reverse the clock instead of undoing a git pull.I mean if you want to get your exact repo the way it was X Mins back then run this command

git reset --hard branchName@{"X Minutes ago"}

Note: before you actually go ahead and run this command please only try this command if you are sure about the time you want to go back to and heres about my situation.

I was currently on a branch develop, I was supposed to checkout to a new branch and pull in another branch lets say Branch A but I accidentally ran git pull origin A before checking out.

so to undo this change I tried this command

git reset --hard develop@{"10 Minutes ago"}

if you are on windows cmd and get error: unknown switch `e

try adding quotes like this

git reset --hard 'develop@{"10 Minutes ago"}'

Solution 8 - Git

Reset the master branch:

git reset --hard origin/master

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKartinsView Question on Stackoverflow
Solution 1 - GitseheView Answer on Stackoverflow
Solution 2 - GitNoufal IbrahimView Answer on Stackoverflow
Solution 3 - GitParag TyagiView Answer on Stackoverflow
Solution 4 - GitNinaView Answer on Stackoverflow
Solution 5 - GitprefView Answer on Stackoverflow
Solution 6 - GitRisadinhaView Answer on Stackoverflow
Solution 7 - GitMahesh JamdadeView Answer on Stackoverflow
Solution 8 - GitYo Yo RoshanView Answer on Stackoverflow