git批量删除本地多余分支

在长期开发中,本地仓库容易积累大量忘记删除的旧分支。手动逐个删除(git branch -D 分支名)效率低下,可通过管道命令批量处理。


1. 强制删除所有分支(仅保留指定分支)

若需保留 main 分支,同时强制删除其他所有分支(包括未合并的分支):

bash 复制代码
git branch | grep -v "main" | xargs git branch -D

说明

  • git branch:列出所有本地分支。
  • grep -v "main":过滤掉包含 main 的行(-v 表示反向匹配)。
  • xargs git branch -D:将分支名传递给 git branch -D 强制删除(-D 跳过未合并检查)。

扩展 :保留多个分支(如 maindevtestprod):

bash 复制代码
git branch | grep -vE "main|dev|test|prod" | xargs git branch -D
  • grep -vE:使用扩展正则表达式(-E)匹配多个关键词。

2. 安全删除已合并的分支(推荐)

为避免误删未合并的分支,可先筛选出已合并到 main 的分支,再批量删除:

css 复制代码
bash
git branch --merged main | grep -vE "main|dev|test|prod" | xargs git branch -d

说明

  • git branch --merged main:仅列出已合并到 main 的分支。
  • git branch -d:安全删除(若分支未合并会报错,需改用 -D 强制删除)。
  • 适用场景:定期清理已完成合并的功能分支。

3. 交互式确认删除(更谨慎)

若需逐个确认分支是否删除,可结合 xargs -p

css 复制代码
bash
git branch | grep -vE "main|dev|test" | xargs -p git branch -D
  • -p:每次执行前提示确认(输入 y 确认删除)。

注意事项

  1. 远程分支:上述命令仅操作本地分支。若需清理远程分支,需使用:

    bash 复制代码
    git push origin --delete 分支名
  2. 未合并分支 :强制删除(-D)会丢失未合并的代码,建议先确认分支状态:

    bash 复制代码
    git branch --no-merged  # 查看未合并的分支
  3. 分支名含空格 :若分支名包含空格,需改用 git for-each-ref 替代 git branch

    bash 复制代码
    git for-each-ref --format='%(refname:short)' refs/heads/ | grep -vE "main|dev|test|prod" | xargs git branch -D

相关推荐
To_OC6 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic6 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy6 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志6 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble8 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯8 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
戮漠summer9 小时前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
名字还没想好☜9 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司9 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
梦想三三9 小时前
Git与GitHub基础入门:从零开始掌握版本控制与代码托管(完整图文教程)
人工智能·git·elasticsearch·github