C/C++教程

git windows下换行符问题 LF与CRLF转换

本文主要是介绍git windows下换行符问题 LF与CRLF转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最近工作中,使用git clone代码后,启动项目,却突然报错,根据提示内容,发现是换行的问题引起的。

报错如下图所示:

 

为什么呢?

为什么会出现这种原因呢?发现团队中,大家分别使用了windows系统,Linux系统,MAC OS系统;在不同的操作系统中,换行符并不统一,Linux系统中使用0x0D0A(CRLF),而MAC OS系统起初使用0x0D(CR)  后来和Linux系统保持一致。  而git默认采用Linux的换行符。

git 为了解决不同平台换行符不一致的问题,在 windows 操作系统中默认在检出代码时将 LF 转换为 CRLF,而在提交的时候再转换为 LF,但是看似完美的解决方案在中文环境中却失效了。 

 

多操作系统平台协同开发时,遇到这种问题,应该怎么办呢?

解决方案

  • 使用编译器配置
  • git设置

 

方法一:编译器设置 

        file — setting — code style  — Line separator 选择Unix and macOS

        

 

方法二:

       使用方法一的时候,突然发现失效了,这个时候,我们就需要去配置git,先了解下git的相关参数:eol  autocrlf   safecrlf

  • eol: 设置工作目录中文件的换行符,有三个值 lf, crlf 和 native(默认,同操作系统)
  • autocrlf:
    • true 表示检出是转换CRLF, 提交时转换为 LF
    • input 表示检出是不转换,提交时转换为 LF
    • false 表示不做转换
  • safecrlf:
    • true 表示不允许提交时包含不同换行符
    • warn 则只在有不同换行符时警告
    • false 则允许提价时有不同换行符存在
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

  

 配置方法如下:

 

    
  <!--统一换行符为 lf-->
  git config --global core.eol lf

  <!--将自动转换关闭,避免转换失败不能不同进行提交-->
  git config --global core.autocrlf false

  <!--禁止混用 lf 和 crlf 两种换行符-->
  git config --global core.safecrlf true

  

咦,怎么启动项目还不行呢?小伙伴们,注意哦!!!如果已经启动项目的话,记得重新pull代码,因为现有的代码格式已经转换了,需要重新配置下哦!

多操作系统平台协同开发时,git的注意事项:不要使用git的换行符自动转换功能,尽可能保证代码的换行符都是unix!

 

 

人最值得高兴的事:父母健在、知己两三、盗不走的爱人,其他都是假象,别太计较。

河南加油!中国加油!

 

 

 

这篇关于git windows下换行符问题 LF与CRLF转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!