From 1f422ae5322b2f7eab2498c7e5ea00abefb1b604 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Tue, 4 Aug 2026 10:50:51 +0100 Subject: [PATCH] Add script to find merged branches when squashed on merge --- git-find-merged | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100755 git-find-merged diff --git a/git-find-merged b/git-find-merged new file mode 100755 index 0000000..cb1e3eb --- /dev/null +++ b/git-find-merged @@ -0,0 +1,17 @@ +#!/bin/bash +# Find local branches that have been squash-merged into a target branch. +# Usage: git-find-merged [target-branch] +# Default target branch: main + +target="${1:-main}" + +git for-each-ref refs/heads/ --format='%(refname:short)' | while read branch; do + [[ "$branch" == "$target" ]] && continue + merge_base=$(git merge-base "$target" "$branch" 2>/dev/null) || continue + tree=$(git rev-parse "$branch^{tree}" 2>/dev/null) || continue + squash_commit=$(git commit-tree "$tree" -p "$merge_base" -m "test" 2>/dev/null) || continue + cherry_result=$(git cherry "$target" "$squash_commit" 2>/dev/null) + if [[ "$cherry_result" == "-"* ]]; then + echo "$branch" + fi +done