美文网首页
CRLF和LF在跨平台工作时候带来的烦恼以及解决方法

CRLF和LF在跨平台工作时候带来的烦恼以及解决方法

作者: 镌刻心语 | 来源:发表于2019-08-21 08:54 被阅读0次

    在使用git提交代码时候,有时候会遇到一个问题,就是自己明明只修改了其中几行,提交上去以后发现整个文件都被修改了,在设置了格式风格以后还会有提交不上去的情况,这个时候经常让人摸不到头脑,其实就是CRLF和LF在作怪
    CRLF LF CR 都是什么意思:

    CRLF: 是carriagereturnlinefeed的缩写。中文意思是回车换行。
    LF: 是line feed的缩写,中文意思是换行。
    CR: 是carriagereturn的缩写。中文意思是回车。

    简单的换行回车为什么会引出这么多的问题呢,关键在于操作系统之间的分歧:
    早期的mac系统使用CR当做换行,现在也已经统一成了LF
    Unix(包含现在大量使用的linux)系统使用LF
    windows系统使用LFCR当做换行(自作聪明的兼容性??)
    也正是因为不同系统的分歧,在多人协作共同开发的时候,可能导致提交代码时候产生问题。
    解决方法:
    Android Studio内部可以设置不同模式,具体位置在setting-->搜索code style见下图:


    image

    其中有四个选项System-Dependent LF CR CRLF,默认是System-Dependent,也就是根据你是什么系统选择什么类型,如果想要自定义的话可以在这里设置,以后创建的新代码也默认用设置的方式

    而如果想单独修改某个文件的类型,也可以在右下角进行修改,见下图:

    image

    跨平台合作时候的解决方式:

    当我们使用git库提交代码的时候,有的人可能使用mac,有的人使用linux,有的人使用windows,不同的开发环境如果都是按照自己系统的方式任意修改换行类型,难免会让代码库整体混乱或者产生许多没有必要的代码更新

    那么解决该问题的方式有:core.autocrlf命令

    git为了防止以上问题扰乱跨平台合作开发,使用命令可以转化LF和CRLF

    具体体现为:

    • git config --global core.autocrlf true

    Git可以在你push时自动地把行结束符CRLF转换成LF,而在pull代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF

    • git config --global core.autocrlf input

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

    • git config --global core.autocrlf false

    在本地和代码库中都保留CRLF,无论pull还是push都不变,代码库什么样,本地还是什么样子

    当然在多人跨平台工作时候,最好还是约定使用LF,还是CRLF,然后不同系统进行对应的设置,这样是工作规范,也有利于提高工作效率,希望以上可以帮助大家。

    相关文章

      网友评论

          本文标题:CRLF和LF在跨平台工作时候带来的烦恼以及解决方法

          本文链接:https://www.haomeiwen.com/subject/gdivsctx.html