Git Emergency
I made a bad merge
Severity Annoying
What just happened
A merge commit joined two histories. If it is not pushed yet, you can simply go back. If it is pushed, you revert it.
Potential risks
- Reverting a merge makes re-merging the same branch later tricky (you must revert the revert).
Before you run anything
- Check whether the merge is pushed: git status shows โahead of originโ if it is not.
- Golden rule: before any destructive command, create a safety branch with git branch backup/before-fix โ it costs nothing.
Recovery steps
- 1
Merge still in progress? Abort it
Returns to the state before you started merging.
Safe$ git merge --abort - 2
Merged but not pushed
ORIG_HEAD points to where you were before the merge. Discards uncommitted changes.
Destructive$ git branch backup/before-fix$ git reset --hard ORIG_HEAD - 3
Already pushed: revert the merge
-m 1 keeps the first parent (your main branch) as the reference.
Caution$ git revert -m 1 <merge-commit-hash>$ git push
These procedures are provided for information only. Read each command and adapt it to your situation before running it. Disclaimer
Other disasters
๐ช I deleted my branch๐จ I pushed directly to main๐ฅ I ran git reset --hard๐งจ I overwrote a colleague's commits๐ I pushed my .env file to GitHub๐ป I lost uncommitted changes๐ฏ I committed on the wrong branch๐ I'm in โdetached HEADโ stateโ๏ธ I'm stuck in a merge conflict๐ซ My push is rejected (non-fast-forward)๐ My rebase went wrong๐ GitHub rejects a file over 100 MB๐ฅธ I committed with the wrong name or email๐๏ธ I deleted a file and committed itโช I want to undo my last commitโ๏ธ I amended a commit that was already pushed๐งน Too many messy commits to clean up๐ฎ I pushed to the wrong branch๐งญ I rebased onto the wrong branch๐ I need back the changes I reverted๐ฆ git stash pop gave me a conflict๐ I committed a file that should be ignored๐ Git doesn't see my file rename (upper/lower case)๐งจ I ran git clean -fd by mistake๐ฉป My repository is corrupted๐ I forgot to pull before pushing๐ฏ Duplicated lines of code after a mergeโ I added a file I didn't want to (git add)โ๏ธ I made a typo in a commit messageโ๏ธ My commit does too many things๐งบ I lost a stash (drop, clear or pop gone wrong)๐ซฅ I pulled and my code disappeared๐ I cherry-picked the wrong commitโ๏ธ I deleted a branch on GitHub / GitLab๐ฅ I pushed with the wrong GitHub account๐ The repository was renamed or moved๐ท๏ธ I tagged the wrong commit๐ Git says every file is modified, but I changed nothing๐ฆ I committed node_modules (or a build folder)๐ I ran git init in the wrong folder๐งจ My pull request has conflictsโณ My pull request is behind main๐ I have to apply review changes to my PR๐งณ My PR shows commits that aren't mine๐ฏ I opened my PR against the wrong branch๐จ A merged PR broke main๐ช I closed my PR (or deleted its branch) by mistake๐ด The checks of my PR are failing๐ My PR is too big to review๐ด My fork is behind the original repository