git 换行符问题


之前被坑过一次,py 文件上传到 Github 后下回来全部用不了,最后发现是因为换行符的问题。
默认上传都是自动改成 Linux(LF) 上传,下下来就还是 LF,Win 上面就全炸了。

默认行为 core.autocrlf=input 目前查看(git config --list)是 core.autocrlf=true。但有文章说默认是false,该环境应该是Linux,可能 Github-desktop 的有所不同,如果 Windows 先装 git 可能也不一样。

行为说明

1
2
3
false 对换行符不做任何修改
True 上传为 lf,git 检出自动替换为 crlf,需要提醒,不确定检出时替换会不会因为文件后缀问题失效,因为部分文件可能不会被识别为 text
input 上传为 lf,检出不做改动,可以避免将 crlf 提交到数据库

一般这种不建议改全局设置,除非你的全部项目都是只有自己一个人维护,另一方面来说,团队最好统一配置。可以在项目的 .gitattributes 里改。

一般也不会设置 autocrlf 的值,而是直接固定项目文件的换行符

text=auto意味着会自动判断,例如一些图片不会被设置文本属性。(之前未设置的时候有遇到exe被设置了text属性)

1
2
* text=auto
* eol=crlf

更具体的还有

1
2
3
4
5
*               text=auto
*.txt text
*.vcproj text eol=crlf
*.sh text eol=lf
*.jpg -text

-text意味着去除文本属性

今天想起来,顺便给 Hexo 里弄了下,这样每次跑不会一大堆 warning,不过设的是 lf

参考