Git合并冲突文件无冲突标记提示,被误判为二进制文件如何解决
解决Git合并时文本文件被识别为二进制导致无冲突标记的问题
问题背景
合并feature分支到dev分支时,实际为文本文件的conflict.txt被Git识别为二进制文件,触发冲突后仅保留dev分支原内容,未生成<<<<<<< HEAD这类冲突标记,git diff命令显示该文件为二进制。
解决步骤
检查文件的Git属性
执行命令查看Git对该文件的识别属性:git check-attr --all conflict.txt如果输出包含
conflict.txt: binary,说明Git确实将其标记为二进制文件,这就是问题根源。强制Git将文件识别为文本
- 针对单个文件设置
在项目根目录创建或编辑.gitattributes文件,添加规则强制该文件为文本类型:echo "conflict.txt text" >> .gitattributes git add .gitattributes git commit -m "标记conflict.txt为文本文件" - 全局规则设置(可选)
如果是文件编码或换行符问题导致Git误判,可全局配置文本文件的自动识别:git config --global core.autocrlf true git config --global core.attributesfile ~/.gitattributes_global echo "* text=auto" >> ~/.gitattributes_global
- 针对单个文件设置
重新执行合并操作
先回退之前失败的合并:git merge --abort之后重新执行合并:
git merge feature此时Git会按文本文件处理conflict.txt,冲突时会正常生成冲突标记。
验证设置效果
执行以下命令确认文件已被识别为文本:git check-attr --all conflict.txt或强制按文本对比查看差异:
git diff --text conflict.txt
内容的提问来源于stack exchange,提问作者rpish
相关产品推荐
相关产品推荐

