如何不用别名用一条命令删除除master和develop外的所有本地Git分支?
可行解决方案
Linux/macOS(Bash/Zsh 环境)
直接执行以下命令即可:
git branch | grep -v -E 'master|develop' | xargs git branch -D
命令说明:
git branch:列出所有本地分支grep -v -E 'master|develop':-E启用扩展正则实现多条件匹配,-v反选过滤掉包含master和develop的行,输出所有需要删除的分支名xargs git branch -D:将前面输出的分支名作为参数传入删除命令,-D代表强制删除;如果仅需要删除已经合并到当前分支的分支,可替换为-d,未合并的分支会触发Git提示,避免误删未提交的工作内容
前置校验建议:
执行删除命令前,可先运行以下命令预览将要删除的分支列表,确认无误后再执行完整删除命令:
git branch | grep -v -E 'master|develop'
如果需要额外保留其他分支,只需修改正则部分即可,比如要同时保留test分支,就改成'master|develop|test'。
Windows PowerShell 环境
PowerShell 没有内置grep和xargs命令,使用以下原生语法实现:
git branch | Select-String -Pattern 'master|develop' -NotMatch | ForEach-Object { $_.ToString().Trim() } | ForEach-Object { git branch -D $_ }
通用注意事项:
- 如果你当前正处在非
master/develop的分支上,Git会自动阻止删除当前所在分支,不会出现误删当前工作内容的情况 - 如果你的项目主分支命名为
main而非master,直接替换命令中的master为main即可
内容的提问来源于stack exchange,提问作者AndreyProgr
相关产品推荐
相关产品推荐

