需求
因为我们项目的GIT工作流是一个任务或一个Bug单独拉一个分支,完成之后再MergeRuquest到开发主分支。时间一长,就导致本地有大量的GIT分支。虽然并没有太大的影响,但GIT会经常提示垃圾回收(git gc)。
解决方案
1. 删除分支命令
删除一条分支:
git branch -D branchName
删除当前分支外的所有分支:
git branch | xargs git branch -d
删除分支名包含指定字符的分支:
git branch | grep 'dev' | xargs git branch -d
// 该例将会删除分支名包含’dev’字符的分支
2. 命令解释
|
管道命令,用于将一串命令串联起来。前面命令的输出可以作为后面命令的输入。
git branch
用于列出本地所有分支。
grep
搜索过滤命令。使用正则表达式搜索文本,并把匹配的行打印出来。
xargs
参数传递命令。用于将标准输入作为命令的参数传给下一个命令。
3. 管道命令与xargs
命令的区别
管道是实现’'将前面的标准输出作为后面的标准输入"
xargs
是实现“将标准输入作为命令的参数"
实例
删除本地分支中包含Hotfix
的分支
执行命令
git branch | grep 'Hotfix' | xargs git branch -d
执行结果
注意事项
执行grep
命令必须在完全支持git命令的命令行工具才能执行,比如在powershell
执行,会报错: