Git批量删除分支| 8月更文挑战

812 阅读2分钟

业务场景

在使用Git进行版本管理的过程中, 通常拥有以下规范:

  • 主分支: main
  • 开发分支: dev
  • 功能分支: feature-*
  • 修复BUG分支: fix-*
  • ...

例如笔者需要完成登录和修改密码功能, 那在笔者的电脑中, 就会存在这样两个分支:

  • feature-login
  • feature-changePassword

功能少还好说, 但如果随着版本迭代和需求更新, 本地已完成的分支会越来越多, 甚至可能会出现分支名称重复的问题

如何规范的去处理这种问题呢?

方案

版本管理

在处理本地分支的问题上, 首先要明确何时该对其进行删除:

  1. 已推送到远程仓库
  2. 已提交PR
  3. 已被管理员合并到开发分支(dev)

在确定执行完上述操作后, 本地分支即可进行删除

删除分支

删除分支使用git branch -D 分支名称即可

例如要删除登录功能分支, 在命令行输入: git branch -D feature-login

批量删除分支

手动一个个输入命令去删除分支, 在分支较多的情况下显然变成了体力劳动

笔者认为这不是一个程序员的风格, 程序员应该是个'懒人'

和linux相同, 我们可以使用管道符号与xargs完成这项工作:

git branch | grep 'feature-*\|fix-*' | xargs git branch -D

其实这是三个命令:

  • git branch: 列出全部分支
  • grep 'feature-*\|fix-*': 筛选以'feature-'或'fix-'开头的分支
  • xargs git branch -D: 强行删除分支

其中最核心的命令是|xargs

|的作用是把前一个命令的输出作为后一个命令的输入

xargs是把输入作为后一个命令的参数

怎么样, 如果你正确理解了这两个命令, 是不是批量删除分支的逻辑就异常清晰了呢?

总结

在学习过程中, 希望小伙伴们可以抓准知识点或技巧的核心内容, 花一分钟拿来用和花三分钟弄清楚为什么并不冲突

我们的人生也不差这两分钟, 戒骄戒躁