欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-06 16:19:56
...

在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:

$ git config --global core.autocrlf true

Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:

$ git config --global core.autocrlf input

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

如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:

$ git config --global core.autocrlf false