如何列出并删除所有已合并到 master 的分支?

使用 Git 命令行工具高效地列出并删除所有已合并到 `master` 的分支。

部署与运维 中等 Git 分支管理 版本控制

使用 Git 命令行工具高效地列出并删除所有已合并到 master 的分支,需要结合列出、过滤和删除操作。具体步骤如下(引用 ``):

  1. 切换到本地 master 分支
    确保当前分支是主干以避免误操作:
    git checkout master  # 切换到 master 分支
    
  2. 列出所有已合并的分支
    使用 git branch --merged 命令显示已合并到当前分支(即 master)的本地分支(包括 master 自身):
    git branch --merged master  # 列出所有已合并分支
    

    结果输出中,避免误操作:

    • 筛选掉 master 本身:因为它不需要删除。
    • 筛选掉以 * 符号标记的当前活跃分支(如其他修改分支)。 使用 grep 过滤:
      git branch --merged master | grep -v '^\*' | grep -v 'master'  # 排除当前分支和 master
      

      输出结果如:

      dev
      feature/new-login
      

      表明这些是安全删除目标 (``)。

  3. 批量删除已列出的本地分支
    将过滤出的命令结果传递给 xargs git branch -d 批量安全删除 (-d 表示只在无未提交改动时删除):
    git branch --merged master | grep -v '^\*' | grep -v 'master' | xargs git branch -d  # 删除本地已合并分支
    
  4. 处理远程分支与清理陈旧引用(可选):
    如果需删除远程对应的分支
    • 同步本地远程追踪以反映服务器状态:
      git remote prune origin  # 清理本地无效远程追踪分支
      
    • 批量删除远程分支(建议脚本化结合人工确认):
      # 列出合并到远程 master 的分支,过滤后交互删除(脚本示例避免数据丢失)
      echo "即将删除以下远程分支:"
      branch=$(git branch -r --merged origin/master | grep -v 'master' | sed 's/origin\///g')
      echo "$branch"
      

      或者直接:

      git branch -r --merged origin/master | grep -v 'master' | sed 's/origin\///g' | xargs git push origin --delete
      

      建议先测试避免删错 (``)。

注意事项:

  • 删除前请检查过滤结果是否包含无意分支,操作后将不可恢复 (``)。
  • 团队协作中合并操作由 pull request 或测试机制确保合并完整。
  • 远程删除通常结合权限控制和自动化工具减少人工失误 (``)。