Git Emergency
I rebased onto the wrong branch
Severity Annoying
What just happened
The rebase replayed your commits on top of the wrong base. Your old branch is still in the reflog, and git rebase --onto can move only your commits.
Potential risks
- If pushed, the branch history changed for everyone using it.
Before you run anything
- Create a backup branch before moving anything.
- Golden rule: before any destructive command, create a safety branch with git branch backup/before-fix โ it costs nothing.
Recovery steps
- 1
Find the branch before the rebase
Right after the rebase, ORIG_HEAD points to it. Otherwise look in the reflog.
Safe$ git branch backup/before-rebase ORIG_HEAD$ git log --oneline -n 5 backup/before-rebase - 2
Option 1: go back to before the rebase
Then rebase again on the right branch.
Destructive$ git reset --hard backup/before-rebase$ git rebase main - 3
Option 2: move only your commits
Takes the commits after wrong-base and replays them on main. Read it as: onto main, from wrong-base.
Caution$ git rebase --onto main wrong-base my-branch
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 made a bad merge๐ป 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 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