代码提交之后,会显示各种异常 图一

在进行code review的时候无法正确显示差异,让人心中不爽,今天有点空,就研究了一下。

如果你没有耐心看下去,可以快速设置 git config –global core.autocrlf input

想根源

首先,想了想,这应该是利用 git diff 进行文件对比,然后修改的文件,加了一些样式才这样的,就想先看看git diff 有没有异常呢

在命令行中 输入

git diff HEAD^ HEAD

这个命令就是比较当前版本 和上个版本之间文件的差异

果然有异常! 图二 有很多的^M符号,这个符号,之前在其它场景也有遇到过,当时.gitignore文件无法生效,然后用vim 打开也有这样的符号存在。 后来进行百度和google,发现 Windows系统下输入的换行符在UNIX/Linux下不会显示为“换行”,而是显示为 ^M 这个符号(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ 和 M 的组合,打印不出来的) 原来是换行符的问题,那图一的问题不就是,它只显示一行,所以看不到最终结果么。

找配置

我就想这个应该是我自己的配置问题,就在intellij中 搜了一下 line separtor 并没有发现什么有效的配置项。

求谷歌

看到这里都是真爱呀,那怎么解决的呢,还是只能google呀。之前google几次 都是 git diff not work之类的,这次找到关键词^M,直接google ‘git diff ^m’ 然后在git官方文档 中发现

git config –global core.autocrlf input

验结果

这样一个命令,就进行了一次global的设置,然后再次提交, 图三

这样一个提交就是删除一行(这一行就是^M 符号在的那一行,也就是错误的全部干掉了) 然后添加了85行(这85行的提交是,新的正确的文件,换行符已经被正确识别)

这样应该没问题了,为了测试,我又提交了一次,这次显示就是完全正常了 图四

加了只改的那一行。而且没有进行任何折叠,验证有效!

本文大部分都是自己的猜测,如果有更好的解决方案,欢迎联系我

各人二维码



Published

18 July 2016