git 换行符问题
最近在windows下使用Git,发现不时没有修改过的文件要提交,对比发现文件全部修改,但找不到不一样的地方,Baidu后怀疑是换行符的问题,因为Windows和Linux的换行符不一样,这个和git客户端配置有关系,如果每个人客户端配置不一样同样会出现该问题.
关于不同系统的换行符问题:
UNIX/Linux : 0x0A
(LF), Mac OS:0x0D
(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。
DOS/Windows : 0x0D0A
(CRLF)作为换行符。
关于编码和换行符设置在安装“Git for windows”的时候,在“Configuing the line ending conversions”页面其实已经给出了提示
说明里已经标的很清楚了:
1.Checkout Windows-styl,commit Unix-style line endings
签出时LF转为CRLF core.autocrlf=true
2.Checkout as-is ,commit-Unix-style line endings
签出时不改变任何内容,提交时CRLF替换为LF core.autocrlf=input
3.checkout as-is,commit as-is
签出签入都不做任何转换保持原样 core.autocrlf=false
指令设置
1.修改git设置 core.autocrlf=input.检出时不转换,提交转换为lf,这样可以避免提交windows换行符的情况.如果是在当前仓库要求 把--global去掉即可。
git config --global core.autocrlf input
2.拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
TortoiseGit设置:
由于使用的是VS比较无法看到换行符效果这里使用TortoiseGit进行比较,在比较窗口的右下角可以看到编码 换行格式等信息
测试环境WIN10+VS2013+TFS2015+GIT 2.10.1
在VS2015中设置后依然无法提交的问题,直接全部不检测不转换(只在windows单平台的时候可以这样操作哦)
git config --global core.autocrlf false git config --global core.safecrlf false
原文参考: