这个是因为换行符的问题,Windows下换行符和Unix下的换行符不一样,git会自动转换,但是这样有问题,所以解决方法如下:
使用命令,禁止自动转换:
git config --global core.autocrlf false
也可以进入当前用户的主目录(通常 XP 的用户目录是 C:\Documents and Settings\当前用户名,在 Vista 和 Win7 下是C:\Users\当前用户名),用你最顺手的文本编辑器打开 .gitconfig 文件。在 [core] 区段找到 autocrlf,将它的值改为 false。如果没找到,就在 [core] 区段中新增一行:
autocrlf = false
如图:
如图:
普及:
不同系统下的换行符
CR、LF、CR/LF为不同操作系统上使用的换行符:
- Windows/DOS系统:采用CR/LF表示下一行;
- Unix/Linux系统:采用LF表示下一行;
- Mac OS系统:采用CR表示下一行;
- Mac OS X系统:采用LF表示下一行( Mac OS X已经改成和Unix/Linx一样使用LF )。
CR使用符号’\r’,十进制ASCII代码是13,十六进制代码为0x0D;LF使用’\n’符号表示,ASCII代码是10,十六制为0x0A。所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示,而UNIX和苹果平台上换行则是使用 0a 或 0d 一个字节表示。
Unix/Linux/Mac系统下的文件在Windows里打开的话(使用Windows自带记事本),会出现换行丢失,所有文字会变成一行,整个文本会乱成一团。Windows系统下的文件在Unix/Linux/Mac里打开的话,在每行的结尾可能会多出一个^M符号。
目前大部分的编辑器和IDE都支持这几种换行符(除了notepad),但是跨平台协作项目源码到底保存为哪种风格的换行符呢?输出的文本需要保存为哪种风格的换行符呢?Git提供了一个解决方案——在跨平台协作场景时,会提供一个“换行符自动转换”的功能。
Git CRLF
Git默认在提交时将Windows换行符(CRLF)转换为LF,在拉取时将UNIX换行符(LF)替换成CRLF。我们可以通过设置autocrlf和safecrlf来设置具体的操作。
如果文件已经被替换过了,可以使用dos2unix
将文件转换为unix格式,然后在提交。(该命令用法可以参考我的另外一篇文章:dos2unix命令将dos文件转换为unix格式)
Author:leedaning
本文地址:http://blog.csdn.net/leedaning/article/details/53024162