Git is easy until it isn't. Here are five mistakes everyone makes, and how to fix each in one line.

1. "I committed to the wrong branch"

git switch correct-branch git cherry-pick <commit-hash> git switch wrong-branch git reset --hard HEAD~1 

Copy the commit over, then remove it from the wrong branch.

2. "I need to undo my last commit"

Pick based on what you want to keep:

Command Commit Staged Files
git reset --soft HEAD~1 removed kept kept
git reset --mixed HEAD~1 removed removed kept
git reset --hard HEAD~1 removed removed deleted

Source: DataCamp (credit the original)

Already pushed? Use git revert <hash>. It adds a new commit instead of rewriting history.

3. "I lost my work after a bad reset"

You probably didn't. Git remembers where HEAD has been:

git reflog git reset --hard <hash-from-reflog> 

4. Merge or rebase?

Source: ByteByteGo (credit the original)

  • Merge: keeps full history, safe for shared branches.
  • Rebase: gives a clean linear history, but never rebase a branch others are using.

5. "I committed a secret or a huge file"

git rm --cached .env echo ".env" >> .gitignore git commit -m "Stop tracking .env" 

If it was pushed, rotate the key and scrub history with git filter-repo.

Cheat sheet

git stash # save work temporarily git stash pop # bring it back git commit --amend # fix the last commit message git restore <file> # discard changes to a file git log --oneline --graph # see history visually 

TL;DR

  • Wrong branch? cherry-pick + reset
  • Undo locally? reset. Undo pushed? revert
  • Lost something? git reflog
  • Shared branch? Merge, don't rebase

What's your worst Git horror story? Tell me in the comments. 👇