Git Undo Pushed Commit: Safe Revert Workflow (2026 Guide)
If the bad commit is already pushed, the safest fix is usually git revert. Revert adds a new commit that undoes the bad one, so teammates do not have to repair rewritten history.
This guide gives exact copy/paste workflows for one commit, multiple commits, merge commits, conflict handling, and rollback verification.
Table of contents
1. Copy/paste commands
Undo latest pushed commit on shared branch
git switch main
git pull --ff-only
git revert HEAD
git push origin main
Undo a specific pushed commit
git log --oneline
git revert <commit-hash>
git push origin main
Undo a range of pushed commits with one revert commit
git revert --no-commit OLDEST^..NEWEST
git commit -m "Revert problematic release changes"
git push origin main
Undo a pushed merge commit
git revert -m 1 <merge-hash>
git push origin main
Undo a wrong revert (re-apply original change)
git revert <revert-commit-hash>
git push origin main
git show --name-only <hash> and git log --oneline --decorate -n 12.
2. When to use revert vs reset
| Situation | Command | Safe for shared branch? |
|---|---|---|
| Commit already pushed to main/dev | git revert <hash> |
Yes |
| Commit is local only, not pushed | git reset --soft HEAD~1 (or mixed/hard) |
Usually no (if force-pushed) |
| Pushed merge commit needs rollback | git revert -m 1 <merge-hash> |
Yes |
| Need to restore code removed by a revert | git revert <revert-hash> |
Yes |
git reset + git push --force on shared branches unless your team explicitly agrees. It rewrites history for everyone else.
3. Undo one pushed commit
Use this when one commit introduced a bug and the commit is already in a branch collaborators pulled.
# 1) update local branch
git switch main
git pull --ff-only
# 2) identify commit to undo
git log --oneline --decorate -n 20
# 3) create inverse commit
git revert <commit-hash>
# 4) publish rollback
git push origin main
If the bad commit is the latest one, use git revert HEAD.
4. Undo multiple pushed commits
When several recent commits should be rolled back together, use --no-commit so you can create one clean revert commit.
# Example range: undo commits from a1b2c3d through f6e7d8c
git revert --no-commit a1b2c3d^..f6e7d8c
# review staged inverse changes
git status
git diff --staged
git commit -m "Revert release 2026.02.16 hotfix bundle"
git push origin main
When commits depend on each other, revert from newest to oldest, or use a range as shown above to let Git resolve in one pass.
5. Undo a pushed merge commit
Merge rollback needs a parent choice. For most pull request merges into main, parent 1 is the mainline:
git show --no-patch --pretty=raw <merge-hash>
git revert -m 1 <merge-hash>
git push origin main
If unsure, use the parent-selection walkthrough in Git Revert a Merge Commit.
6. Verify, conflict handling, and recovery
Pre-push checks
git status
git log --oneline --decorate -n 8
git show --name-only HEAD
If revert conflicts
# resolve conflicted files, then:
git add <resolved-files>
git revert --continue
# abort if needed:
git revert --abort
If you reverted the wrong commit
# create a new commit that undoes the bad revert
git revert <revert-commit-hash>
git push origin main
That "revert the revert" pattern is the safest recovery because history remains linear and explicit.
7. FAQ
Can I undo a pushed commit without a new commit?
Not safely on a shared branch. Removing it from history requires reset + force push, which rewrites public history and can disrupt teammates.
Should I revert on feature branches too?
If others already pulled that feature branch, yes. If it is private and local-only, reset can be cleaner.
Will revert delete files permanently?
No. Revert applies inverse changes as a normal commit. You can inspect, review, and even revert the revert later.
How do I undo the very last commit after push?
Run git revert HEAD, then push. That is the standard safe rollback for a published latest commit.
Where can I compare reset, revert, restore quickly?
Use Git Undo: Reset, Revert & Restore for the full decision map.
Related Resources
-m parent selection before rollback.
Git Commands Cheat Sheet
Quick reference for daily Git commands and flags.