本文目录导读:

我来介绍几种批量删除Git分支的方法:
删除本地分支
删除所有本地分支(除了当前分支)
git branch | grep -v "^*" | xargs git branch -d
删除特定模式的分支
# 删除所有以 "feature/" 开头的分支 git branch | grep "feature/" | xargs git branch -d # 删除所有已合并的分支 git branch --merged | grep -v "^*" | xargs git branch -d
删除远程分支
批量删除远程分支
# 删除远程所有以 "feature/" 开头的分支
git branch -r | grep "origin/feature/" | sed 's/origin\///' | xargs -I {} git push origin --delete {}
# 或使用更简单的方式
git branch -r | grep "feature/" | sed 's/origin\///' | xargs git push origin --delete
完整的Shell脚本
创建一个 delete-git-branches.sh 文件:
#!/bin/bash
# 批量删除Git分支脚本
echo "====== Git 批量分支删除工具 ======"
echo "1. 删除本地已合并分支"
echo "2. 删除本地特定模式分支"
echo "3. 删除远程特定模式分支"
echo "4. 删除本地和远程的特定模式分支"
echo "================================"
read -p "请选择操作 (1-4): " choice
case $choice in
1)
echo "删除本地已合并分支(保留当前分支和main/master)..."
git branch --merged | grep -v "\*\|master\|main" | xargs -n 1 git branch -d
echo "完成!"
;;
2)
read -p "输入要删除的分支模式(如 feature/): " pattern
echo "删除本地以 '$pattern' 开头的分支..."
git branch | grep "^$pattern" | xargs -n 1 git branch -d
echo "完成!"
;;
3)
read -p "输入要删除的远程分支模式(如 feature/): " pattern
echo "删除远程以 '$pattern' 开头的分支..."
git branch -r | grep "origin/$pattern" | sed 's/origin\///' | xargs -n 1 git push origin --delete
echo "完成!"
;;
4)
read -p "输入要删除的分支模式(如 feature/): " pattern
echo "1. 删除本地分支..."
git branch | grep "^$pattern" | xargs -n 1 git branch -d
echo "2. 删除远程分支..."
git branch -r | grep "origin/$pattern" | sed 's/origin\///' | xargs -n 1 git push origin --delete
echo "完成!"
;;
*)
echo "无效选择"
exit 1
;;
esac
安全版本(带确认)
#!/bin/bash
delete_branch_safe() {
local branch_name=$1
echo "准备删除分支: $branch_name"
read -p "确认删除? (y/n): " confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
git branch -d $branch_name
echo "已删除: $branch_name"
else
echo "跳过: $branch_name"
fi
}
# 列出所有要删除的分支
branches_to_delete=$(git branch | grep "feature/")
for branch in $branches_to_delete; do
delete_branch_safe $branch
done
常用的一行命令
# 删除30天前创建的分支(需要git-extras) git-delete-merged-branches # 删除除了master/main之外的所有本地分支 git branch | grep -v "master\|main" | xargs git branch -D # 强制删除所有本地分支(小心使用!) git branch | grep -v "master\|main\|develop" | xargs git branch -D
注意事项
- 备份重要代码:删除前确保分支代码已合并或备份
- 使用
-d而不是-D:-d只删除已合并分支,-D强制删除 - 先检查再删除:先用
echo测试要删除的分支列表 - 远程分支删除不可恢复:远程分支删除后需要管理员权限才可能恢复
测试命令(安全预览)
# 只显示要删除的分支,不实际删除 git branch | grep "feature/" | xargs echo "将要删除: "
这些脚本可以根据你的具体需求进行修改和组合使用。