如何让Git合并时自动接受未修改文件的冲突,仅提示已修改文件的合并冲突
实现方法
你的需求可以通过以下两种方案实现:
方案一:合并前先变基(推荐)
你遇到大量无关冲突的核心原因是feature分支的基准是旧版master,和development分支的公共提交节点太旧,导致Git需要对比跨度很大的历史版本。操作步骤如下:
- 切换到
feature分支:git checkout feature - 将
feature分支变基到最新的development分支:git rebase development- 变基过程中只会触发你在
feature分支修改过的文件的冲突,无关文件不会出现冲突,按提示处理完冲突后完成变基
- 变基过程中只会触发你在
- 切换回
development分支:git checkout development - 执行squash合并:
git merge --squash feature,此时不会再出现无关冲突,直接提交即可
方案二:已触发合并冲突时批量处理无关文件
如果已经执行了合并命令产生冲突,不想重新走流程,可以直接批量处理你未修改的冲突文件:
- 先列出所有你在
feature分支中修改过的文件,保存为临时清单:git diff --name-only master feature > modified_files.txt - 批量将所有冲突的未修改文件替换为当前
development分支的版本:
命令说明:git diff --name-only --diff-filter=U | grep -v -F -f modified_files.txt | xargs git checkout --oursgit diff --name-only --diff-filter=U:列出当前所有存在合并冲突的文件grep -v -F -f modified_files.txt:排除掉你在feature分支修改过的文件xargs git checkout --ours:对剩余文件统一采用当前分支(development)的版本解决冲突
- 此时剩下的冲突仅为你修改过的文件,手动处理完成后即可提交合并结果
注意:
-Xours/-Xtheirs是全局合并策略参数,确实会对所有文件生效,不适用于你需要分文件处理的场景,通过上述两种方式可以精准控制冲突处理范围。
内容的提问来源于stack exchange,提问作者Some Guy
相关产品推荐
相关产品推荐

