Git Emergency

I pulled and my code disappeared

Severity Serious

What just happened

Most often you're on another branch than you think, a merge or rebase changed files, or a teammate deleted code that is now merged in. Your commits are still in the reflog.

Potential risks

  • Panic commands (reset --hard, clean) are what really lose work.

Before you run anything

  • Don't run anything destructive. Look first.
  • Golden rule: before any destructive command, create a safety branch with git branch backup/before-fix โ€” it costs nothing.

Recovery steps

  1. 1

    Where am I?

    Check the branch and whether a merge/rebase is in progress.

    Safe
    $ git status
    $ git branch --show-current
  2. 2

    Find your state before the pull

    ORIG_HEAD and the reflog show where you were.

    Safe
    $ git log -1 ORIG_HEAD
    $ git reflog -n 15
  3. 3

    Who removed the code?

    Shows the commits that changed that file.

    Safe
    $ git log -p --follow -- path/to/file
  4. 4

    Go back to before the pull (not pushed)

    Only if the pull itself is the problem and you have nothing uncommitted.

    Destructive
    $ git reset --hard ORIG_HEAD

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 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 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