小编发现最近在使用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
Last modification:February 18th, 2021 at 12:02 pm
If you think my article is useful to you, please feel free to appreciate