git笔记之清理本地存在但远程不存在的分支

下面这段 Bash 脚本的作用是:在本地 Git 仓库中查找那些本地存在但远程(origin)不存在的分支(除去 main、master、dev 这些保护分支),并提示用户确认后删除这些本地分支。
git
#!/bin/bash
# 获取远程分支列表
remote_branches=$(git branch -r | sed 's/origin\///' | tr -d ' ')
# 获取本地分支列表
local_branches=$(git branch | tr -d ' *')
# 找出本地有但远程没有的分支
branches_to_delete=""
for branch in $local_branches; do
if [[ ! " ${remote_branches[@]} " =~ " ${branch} " ]] &&
[[ "$branch" != "main" ]] &&
[[ "$branch" != "master" ]] &&
[[ "$branch" != "dev" ]]; then
branches_to_delete+=" $branch"
fi
done
# 删除这些分支
if [ -n "$branches_to_delete" ]; then
echo "将要删除的分支: $branches_to_delete"
read -p "确认删除这些分支?(y/N): " confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
echo "$branches_to_delete" | xargs -n 1 git branch -D
echo "分支已删除"
else
echo "操作取消"
fi
else
echo "没有需要删除的分支"
fi