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

 

原文参考:

 git官方说明

github

Git中的AutoCRLF与SafeCRLF换行符问题

GitHub 第一坑:换行符自动转换

 

posted @ 2017-01-16 11:38  Merray  Views(7523)  Comments(0Edit  收藏  举报