天天看点

GitLab、CRLF(/r/n)、CRLF(/r/n)、CRLF(/r/n)处理

在windows和linux混合开发的过程中,使用git管理代码,会出现一些莫名的错误,今天说的这个是gitlab的一个大坑,看到大神们写的文章后,我不啰嗦直接给问题和解决方案。如下:

问题原因:在windows环境下默认的换行为CRLF(/r/n),在linux环境下默认的为LF(/n),在Mac环境下默认的为CR(/r),开发过程中git有点聪明过头了,自己会默认自动转换换行

问题描述:然后在以linux为服务器的时候,就会出现换行错误

解决方案:综合各位大神的解决方案,最直白的方式,(LZ的开发环境为windows)打开命令窗口全局修改git即可,命令如下:

     git config --global core.autocrlf false

   git config --global core.safecrlf true

Windows:(true)

MAC/Linux:(input)

core.autocrlf

true // 表示自动更换crlf,windows下如果checkout是\n,则自动换为\r\n,在提交时在自动换回\n

input // 自动把\r\n换为\n

false // 就是不作处理

core.safecrlf

true // 禁止提交混合\n和\r\n的文件

false // 允许提交

warn // 提交时产生警告

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用

core.autocrlf

来打开此项功能,如果是在Windows系统上,把它设置成

true

,这样当签出代码时,LF会被转换成CRLF:

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把

core.autocrlf

设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置

false

取消此功能,把回车符记录在库中: