hncys 发表于 2018-1-13 13:32:24

Merray‘s Development Notes

  最近在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”页面其实已经给出了提示
https://images2015.cnblogs.com/blog/45449/201701/45449-20170116110417302-1893622021.png
  说明里已经标的很清楚了:
  1.Checkout Windows-styl,commit Unix-style line endings
  签出时LF转为CRLFcore.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.autocrlfinput  

  

  2.拒绝提交包含混合换行符的文件
  

git config --global core.safecrlf true  

  

  TortoiseGit设置:
https://images2015.cnblogs.com/blog/45449/201701/45449-20170116110919927-1648452166.png
  由于使用的是VS比较无法看到换行符效果这里使用TortoiseGit进行比较,在比较窗口的右下角可以看到编码 换行格式等信息
https://images2015.cnblogs.com/blog/45449/201701/45449-20170116145159864-325429794.png
https://images2015.cnblogs.com/blog/45449/201701/45449-20170116144754130-1356470596.png
  测试环境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 第一坑:换行符自动转换
页: [1]
查看完整版本: Merray‘s Development Notes