git: 行尾crlf换行符\n与\r\n处理,文件属性

http://www.wy182000.com/2014/01/06/git-%E8%A1%8C%E5%B0%BEcrlf%E6%8D%A2%E8%A1%8C%E7%AC%A6n%E4%B8%8Ern%E5%A4%84%E7%90%86/

https://www.cnblogs.com/flying_bat/archive/2013/09/16/3324769.html

$ cat ~/.gitconfig
[user]
        name = yansiyu
        email = yansiyu@sh.com
[diff]
        tool = vimdiff
[difftool]
        prompt = false
[alias]
        d = difftool
        dfw = diff --ignore-space-change
[core]
        autocrlf = true
        whitespace = cr-at-eol
        safecrlf = false

如果是linux和windows混合开发,很容易会遇到行尾换行符的问题,windows下默认是\r\n,linux下是\n。如果没做处理,git提交时很有可能产生问题,解决办法为设置git config的 core.autocrlf,
git config –global core.autocrlf true // 表示自动更换crlf,windows下如果checkout是\n,则自动换为\r\n,在提交时在自动换回\n
git config –global core.autocrlf input // 自动把\r\n换为\n
git config –global core.autocrlf false // 就是不作处理
如果已经产生了\r\n,merge时产生问题,可以设置
git config merge.renormalize true // merge时忽略行尾对比
如果只需要执行一次merge可以是用命令
git merge -s recursive -X ignore-space-at-eol origin/master
还可以设置crlf安全检查
git config –global core.safecrlf true // 禁止提交混合\n和\r\n的文件
git config –global core.safecrlf false // 允许提交
git config –global core.safecrlf warn // 提交时产生警告

如果经常产生文件属性变更的情况,可以设置
git config –global core.filemode false

最近在使用GitHub,发现不时没有修改过的文件要提交,对比发现文件全部修改,但找不到不一样的地方。
想可能是换行符的问题,因为Windows和Linux的换行符不一样,而Git默认应该是Linux的,今天Bing了下,果然是这个问题。
CR回车 LF换行Windows/Dos CRLF \r\n
Linux/Unix LF \n
MacOS CR \r
解决方法是:打开命令行,进行设置,如果你是在Windows下开发,建议设置autocrlf为true。
2014/08/20 补充:如果你文件编码是UTF8并且包含中文文字,那还是把autocrlf设置为false,并且把所有文件转换为Linux编码(即LF\n),开启safecrlf检查。
一、AutoCRLF
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true   

#提交时转换为LF,检出时不转换
git config --global core.autocrlf input   

#提交检出均不转换
git config --global core.autocrlf false
二、SafeCRLF

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true   

#允许提交包含混合换行符的文件
git config --global core.safecrlf false   

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

    A+
发布日期:2019年04月26日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: