美文网首页Git
Git core.autocrlf 配置说明

Git core.autocrlf 配置说明

作者: AnyunBo | 来源:发表于2021-05-28 14:37 被阅读0次

    最近在开发中提交代码时,IDEA提示core.autocrlf的配置,如下图:

    代码提交换行格式.png

    出现这种情况是因为许多开发人员在协作时,特别是在跨平台情况下由于编辑器不同或者操作系统的不同,发生的行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题但它会极大扰乱大家的协作。

    CRLF and LF

    • CRLF是Carriage-Return Line-Feed 回车换行
    • LF 是 line feed 的缩写,中文意思是换行

    三种方式处理的不同

    • CRLF->Windows-style
    • LF->Unix Style
    • CR->Mac Style
    • CRLF 表示句尾使用回车换行两个字符(即我们常在Windows编程时使用 "\r\n"换行)
    • LF 表示表示句尾,只使用换行
    • CR 表示只使用回车

    在 Git 中转换

    • 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
    

    解释:core.autocrlfgit中负责处理line endings的变量,可以设置三个值 true,input,false
    设置成三个值会有什么效果呢?

    • core.autocrlf设置为 true,添加文件到git仓库时,git将其视为文本文件。他将把 CRLF变成LF
    • core.autocrlf设置为false时,line-endings将不做转换操作。文本文件保持原来的样子
    • core.autocrlf设置为 input时,添加文件git仓库时,git 把 crlf 编程LF。当有人 Check 代码时还 是LF方式。因此在 window操作系统下,不要使用这个设置。

    参考文章:

    相关文章

      网友评论

        本文标题:Git core.autocrlf 配置说明

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