IDEA GoLand 问题 Contents have differences only in line separators

2 篇文章 0 订阅

问题1:IDEA GoLand 问题 Contents have differences only in line separators

原因:使用mac导入的windows项目文件,系统默认打开文件替换之前行分隔符
解决:需要改成统一分隔符。全选所有文件,点击File->File Properties->Line Separator 更换成上个版本的分隔符即可。
在这里插入图片描述

问题2:显示Contents are identical

替换分隔符后, 工作区还是提示文件全是改动过,显示Contents are identical,其实内容都是一样,经过解决后,推测是ide git 缓存的问题。

  • 设置了: git config core.fileMode false
    参考了 Commit Changes displaying “Contents are identical” when pushing changes
    并没有生效,可能它仅解决文件权限变化了 有这种提示的问题。对我来说是无效。
  • 后来:尝试File->Invalidate Cache 重启Ide 也无效
  • 最后:干脆自己把所有文件提交尝试后,发现并没有提交全部,只是提交我实际改动了文件内容的文件,因为本次提交不是本意提交,所以自己撤销本地提交,撤销后修复了该问题;或者不撤销也可以,问题也能修复。

每个人的情况可能不同,这里记录尝试方法,供大家参考,也给自己备录,再次遇到这个问题时,重新commit后回退就好了。
背景
首先在不同操作系统中,换行符并不统一,Linux 系统中使用 0x0A(LF), windows 系统中使用 0x0D0A(CRLF), 而 MAC OS 系统起初使用0x0D(CR) 后来和 Linux 系统保持一致。而 git 默认采用 Linux 的换行符(当然这一点并不奇怪)。
git 为了解决不同平台换行符不一致的问题,在 windows 操作系统中默认在检出代码时将 LF 转换为 CRLF,而在提交的时候再转换为 LF,但是看似完美的解决方案在中文环境中却失效了。

根本解决方案

设置 git 全局参数
git 中有三个参数于换行符有关:

eol: 设置工作目录中文件的换行符,有三个值 lf, crlf 和 native(默认,同操作系统)
autocrlf:

true 表示检出是转换CRLF, 提交时转换为 LF
input 表示检出是不转换,提交时转换为 LF
false 表示不做转换

safecrlf:

true 表示不允许提交时包含不同换行符
warn 则只在有不同换行符时警告
false 则允许提价时有不同换行符存在

git config --global core.eol lf

git config --global core.autocrlf false

git config --global core.safecrlf true

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值