小编发现最近在使用git diff
这个命令的时候,有些代码明明没有修改,却标识修改过,末尾加上了个^M。很奇怪啊,我们先说下^M的由来:
这个是由于 Windows 和 Unix 下的换行符不一致导致的,Windows 下,换行符是 \r\n
,在 Unix 下换行符是 \n
。如果我们用把一个文件的换行符换成 Windows 的换行符就会出现这样的问题,实际上 ^M
就是 Windows 下的换行符中的 \r
部分。因为 Unix 下的换行符是 \n
,所以当一个用 Windows 下的换行符的文件放在 Unix 下的时候,单行的最后一个字符就变成了 \r
,\r
在 ASCII 码中是 0xD
,而 0xD
在 VIM 和 cat -v 则刚好被显示为 ^M,这次明白了吧。
解决办法:
我们可以git diff
的时候忽略换行符的差异:
git config --global core.whitespace cr-at-eol