IDEA GoLand 问题 Contents have differences only in line separators

  • Post author:
  • Post category:其他




问题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



版权声明:本文为qq_34291777原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。