DEV Community

shruti jain
shruti jain

Posted on

Git Branch Management: Merged, Unmerged, and Clean-Up — A No-Nonsense Cheatsheet

Keeping your Git repo clean is underrated. I’ve seen teams drown in a sea of stale branches — some merged, some half-baked, some lost to time.

So here’s a practical cheatsheet I put together to manage local branches like a pro. If you’re tired of guessing what's merged and what's just wasting disk space, this one’s for you.


🔍 1. List Local Branches Merged into master

git branch --merged master
Enter fullscreen mode Exit fullscreen mode

Why: These are safe to delete. Their commits are already in master.


🔍 2. List Local Branches Not Merged into master

git branch --no-merged master
Enter fullscreen mode Exit fullscreen mode

Why: These might have unmerged work. Review before deleting.


✅ 3. Check if a Specific Branch Is Fully Merged

git merge-base --is-ancestor your-branch master && echo "Merged ✅" || echo "Not merged ❌"
Enter fullscreen mode Exit fullscreen mode

Why: Quick yes/no check without manually scanning logs.


🍒 4. See What’s Unique to Your Branch (git cherry FTW)

git cherry master your-branch
Enter fullscreen mode Exit fullscreen mode
  • + = unique commit in your branch
  • - = already in master
  • No output = fully merged

🧼 5. Delete Local Branches

git branch -d your-branch    # Safe delete (if merged)
git branch -D your-branch    # Force delete (if unmerged)
Enter fullscreen mode Exit fullscreen mode

Use with caution. Especially -D.


☁️ 6. Delete Remote Branch

git push origin --delete your-branch
Enter fullscreen mode Exit fullscreen mode

Why: Local cleanup is one thing. Don't leave junk on origin either.


⏱ 7. Sort Local Branches by Last Commit Date

git for-each-ref --sort=-committerdate --format="%(committerdate:short)  %(refname:short)" refs/heads/
Enter fullscreen mode Exit fullscreen mode

Why: Spot stale or abandoned branches quickly.


📊 8. One-Liner: Show Merged vs Not Merged Branches

echo "=== Merged ==="; git branch --merged master; echo ""; echo "=== Not Merged ==="; git branch --no-merged master
Enter fullscreen mode Exit fullscreen mode

Why: Good for audits and cleanup days.


🧽 9. Auto-Delete All Safe-to-Remove Local Branches

git branch --merged master | grep -vE '^\*|master|main|dev' | xargs -n 1 git branch -d
Enter fullscreen mode Exit fullscreen mode

Why: Deletes all merged local branches except the important ones (master, main, dev, current branch).


🎯 Bonus Tip: Automate It

Add a script or alias for regular cleanup. Git hygiene = happier devs + cleaner merges.


Final Thoughts

Don’t let your repo turn into a graveyard of zombie branches. A few CLI tricks like these can keep things lean, understandable, and merge-conflict-free.

Got a favorite cleanup command or Git trick? Drop it in the comments — let’s trade war tools.

Top comments (1)

Collapse
 
kamalmost profile image
KamalMostafa

Useful indeed Thx 4 sharing