当前问题的描述
IDEA 中使用 Git 提交代码时候, 会发现出现在变动列表只用, 文件本身是蓝色的, 也代表文件有改变,但比较上一次的版本和本地版本是一致的, 显示 no difference 并且显示 Contents are identica, 即内容无改变, 但是文件还是蓝色的; 此时拉取代码, 如果新版本也有该文件, 拉取会失败. 说明代码文件本质还是有区别的
出现问题的原因
本质是换行符的问题, 编辑器左下角有三种换行符 CRLF CR LF. 分别对应不同系统下换行使用的是 \n\r \n \r. 这个在编辑器中正常是不可见的, 因此 GIt 提交看到文件有变动, 但点进去又提示内容没有变动
诱发问题的场景
出现这种问题, 基本都是开发人员使用的开发环境不一致, 编辑器默认的换行符没有统一, Git 也有配置项(autoCRLF)会影响换行符
解决问题的方法
- 最优解是统一环境, 或者退而求其次统一换行符, 治标又治本
- 可以让 Git 忽略换行符
git config core.fileMode false
文档地址