1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#!/bin/bash
# Interactive Git Branch Deletion Script
# This script allows you to interactively delete local Git branches
# It will preserve main, develop, and the current branch
# Get all branches except main, develop, and current branch
branches=$(git branch | grep -v "^\*\|main\|develop" | sed 's/^[[:space:]]*//')
if [ -z "$branches" ]; then
echo "No branches to delete (keeping main, develop, and current branch)"
exit 0
fi
echo "Available branches to delete:"
echo "$branches"
echo
echo "You can delete branches one by one. Press Ctrl+C to exit anytime."
echo
for branch in $branches; do
echo -n "Delete branch '$branch'? (y/n/q): "
read -r answer
case $answer in
[Yy]* )
echo "Deleting $branch..."
git branch -d "$branch" 2>/dev/null
if [ $? -ne 0 ]; then
echo -n "Branch '$branch' has unmerged commits. Force delete? (y/n): "
read -r force_answer
case $force_answer in
[Yy]* )
git branch -D "$branch"
echo "Force deleted $branch"
;;
* )
echo "Skipped $branch"
;;
esac
else
echo "Deleted $branch"
fi
;;
[Qq]* )
echo "Exiting..."
exit 0
;;
* )
echo "Skipped $branch"
;;
esac
echo
done
echo "Branch cleanup completed!"
|