如何列出并删除所有已合并到 master 的分支?
使用 Git 命令行工具高效地列出并删除所有已合并到 `master` 的分支。
使用 Git 命令行工具高效地列出并删除所有已合并到 master
的分支,需要结合列出、过滤和删除操作。具体步骤如下(引用 ``):
- 切换到本地 master 分支:
确保当前分支是主干以避免误操作:git checkout master # 切换到 master 分支
- 列出所有已合并的分支:
使用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
表明这些是安全删除目标 (``)。
- 筛选掉
- 批量删除已列出的本地分支:
将过滤出的命令结果传递给xargs git branch -d
批量安全删除 (-d
表示只在无未提交改动时删除):git branch --merged master | grep -v '^\*' | grep -v 'master' | xargs git branch -d # 删除本地已合并分支
- 处理远程分支与清理陈旧引用(可选):
如果需删除远程对应的分支:- 同步本地远程追踪以反映服务器状态:
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 或测试机制确保合并完整。
- 远程删除通常结合权限控制和自动化工具减少人工失误 (``)。