Running git pull
fetches changes from a remote repository and merges them into your current branch. But what if you pulled the wrong changes or weren’t ready to merge?
Don’t worry — Git provides several ways to undo a git pull
, depending on what happened and how far you want to rewind.
✅ What Does git pull
Do?
The command:
git pull
Is shorthand for:
git fetch
git merge
It pulls down changes from the remote branch and merges them into your current local branch.
🛠 Undo Scenarios
Let’s break it down by situation.
🔄 Scenario 1: You Just Pulled and Want to Revert the Merge
If you haven’t made any new commits after the pull, you can reset your branch to the state before the pull:
git reset --hard ORIG_HEAD
ORIG_HEAD
refers to the state of your branch before the last merge (pull).--hard
resets your working directory and index to match the previous commit.
✅ Use this if you want to undo the pull completely (code + history).
🔧 Scenario 2: Keep Your Changes, Just Undo the Merge
If you want to undo the pull but preserve your changes, use:
git reset --soft ORIG_HEAD
- This will undo the merge but keep your files staged (ready to commit).
Or:
git reset --mixed ORIG_HEAD
- This will undo the merge and keep your changes unstaged.
🔍 Scenario 3: Only Want to Undo a Pull with Rebase
If you used:
git pull --rebase
To undo it:
git rebase --abort
This cancels the ongoing rebase operation.
💡 Tip: Check the History Before You Undo
Run this to see recent commits:
git log --oneline
It helps identify if the pull added unwanted commits that you can reset or revert.
🔁 Bonus: Use git reflog
to Recover or Explore History
If you’re unsure what happened, this shows recent Git operations:
git reflog
You can reset to a specific state:
git reset --hard <commit-hash>
Example:
git reset --hard HEAD@{1}
⚠️ Important Notes
- Reset with
--hard
will discard any uncommitted changes. Use with caution. - For shared branches, avoid rewriting history unless absolutely necessary.
- Consider creating a backup branch before undoing:
git branch backup-before-undo
✅ Summary
Task | Command |
---|---|
Undo last pull (reset everything) | git reset --hard ORIG_HEAD |
Undo pull but keep changes | git reset --soft ORIG_HEAD |
Abort rebase-based pull | git rebase --abort |
View Git history | git reflog |
Create backup before undoing | git branch backup-before-undo |
🚀 Final Thoughts
Whether you pulled too early or merged the wrong changes, Git gives you the tools to reverse course. Use ORIG_HEAD
, reflog
, and reset
wisely, and always consider stashing or backing up before making destructive changes.