如何找出所有存在合并冲突的Git分支?
批量检查Git分支与目标分支的合并冲突
实现方案
可以通过Bash脚本批量遍历本地分支,对每个分支执行预合并检查(不实际提交),自动收集冲突信息后清理现场,无需手动逐个操作。
完整脚本
#!/bin/bash TARGET_BRANCH="origin/develop" # 拉取远程最新分支数据,确保检查基准是最新状态 git fetch # 记录当前所在分支,执行完后切回 original_branch=$(git rev-parse --abbrev-ref HEAD) # 遍历所有本地分支 for branch in $(git branch --format="%(refname:short)"); do echo "=== 检查分支: $branch ===" # 切换到待检查分支 git checkout "$branch" > /dev/null 2>&1 # 执行预合并并提取冲突文件 conflict_files=$(git merge --no-commit --no-ff "$TARGET_BRANCH" 2>&1 | awk '$1 == "CONFLICT" {print $NF}') if [ -n "$conflict_files" ]; then echo "存在冲突的文件:" echo "$conflict_files" else echo "无合并冲突" fi # 终止预合并,清理现场 git merge --abort > /dev/null 2>&1 echo "" done # 切回初始分支 git checkout "$original_branch" > /dev/null 2>&1
使用步骤
- 将脚本保存为
check-branch-conflicts.sh - 赋予执行权限:
chmod +x check-branch-conflicts.sh - 在Git仓库根目录运行脚本,即可自动遍历所有本地分支,输出与
origin/develop的冲突情况
关键说明
- 脚本执行前请确保工作区无未提交修改,避免分支切换失败
- 全程不会实际完成合并,所有预合并操作都会被
git merge --abort撤销 git fetch确保使用远程最新的origin/develop作为检查基准
内容的提问来源于stack exchange,提问作者AncientSwordRage
相关产品推荐
相关产品推荐

