问题描述
我先fork了一份,然后改了其中的一个文件。在pull request时出现了下面截图的情况,为什么会这样啊。我只改变了第16行,为什么在只改一行的情况下这个文件比较的时候会出现整个文件都不一样了。
问题解答
回答1:可能是空格和tab转换的问题,视乎你使用开发工具的一些设置
回答2:windows 用的是 CRLF 两个字符,换行
*unix 和 Mac 默认用的是 LF 换行
所以你的windows机器修改保存后自动把文件中的 LF 改为 CRLF了
解决办法如下:Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
$ git config --global core.autocrlf true
Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:
$ git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。
如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
$ git config --global core.autocrlf false
你可以参考官方中文文档