工作的时候习惯每一个任务都创建一个分支,任务完结都会合并到主分支上,GitHub 的 Pull Request 机制提供了 merge 后删除分支的功能,久而久之本地就会多了很多废弃的分支,有时候会搞错名称相近的分支,于是突发奇想写了一个脚本用来清理这些分支。基本上就只保留了有效跟踪远程分支的本地分支,其他一律删除。
注意:请确保有效代码都已推送到远程!
注意:请确保有效代码都已推送到远程!
注意:请确保有效代码都已推送到远程!
依赖 Z Shell 环境,主要由于 read 指令的使用方法不同。
代码可用,只不过缺乏优雅,后续有空还会做优化,比如代码重用和多种情况的统一处理方案。
另外脚本中用了 git branch 的-d 参数而不是-D 参数:
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
所以使用脚本的时候会发现有一些没有 Merge 到其他分支的分支无法删除,这算是一个安全机制吧,确认确实可以删除可以使用 git branch -D 指令手动删除一下,或者心大的话直接把脚本里的参数改成-D。