• 【git系列4/4】如何设置core.autocrlf | core.safecrlf (配置值的含义及最佳实践)


    关于core.autocrlf和core.safecrlf配置及其默认值(全网最全之一,翻查了许多资料)

    一、git 配置的级别,如何新增、删除git配置,配置的覆盖关系、配置对应在什么目录

    参考本人另外一篇文章:https://blog.csdn.net/w8y56f/article/details/126012346

    二、关于换行符种类和安装 Git 的时候选择 core.autocrlf 的配置值

    参考本人另外一篇文章:https://blog.csdn.net/w8y56f/article/details/126012369

    三、仓库(GitHub)上的项目的文件是什么换行符?同一个文件可以有不同换行符吗?

    参考本人另外一篇文章:https://blog.csdn.net/w8y56f/article/details/126023439

    四、关于 core.autocrlf | core.safecrlf 及其默认值

    结论:core.autocrlf 的默认值是false,core.safecrlf默认值是warn

    * 对于Windows,安装的过程会让你选择core.autocrlf,如果你一直点击 "下一步" 指定的就是true。如果删掉这个system配置,表现出来的行为就是false
    * 对于Windows对于core.safecrlf,安装过程不会指定,也查不到这个配置,默认值是warn。
    
    
    参考资料:https://stackoverflow.com/questions/39408793/git-core-autocrlf-line-ending-default-setting
    https://github.com/git/git/blob/936d1b989416a95f593bf81ccae8ac62cd83f279/environment.c#L48
    https://github.com/git/git/blob/936d1b989416a95f593bf81ccae8ac62cd83f279/environment.c#L52
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    五、core.autocrlf | core.safecrlf 的行为

    core.autocrlf
      true: 提交时改成LF,检出时改成CRLF
      input:提交时改成LF,检出时不改
      false:提交时是什么就是什么,不改换行符,检出时也不改  					(默认值)
      
    
    core.safecrlf
      true: 拒绝提交包含混合换行符的文件		(会提示 Fatal:xxx)
      false: 允许提交包含混合换行符的文件 
      warn: 提交包含混合换行符的文件时给出警告		(默认值)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    请仔细阅安装过程中的截图,这里已经很详细地解释了core.autocrlf的行为

    在这里插入图片描述

    六、设置 core.autocrlf | core.safecrlf 的最佳经验

    6.1 core.autocrlf
    • 如果你用Windows就设置全局变量 git config --global core.autocrlf true
    • 如果是mac/linux则设置 git config --global core.autocrlf input

    (强烈建议:显式指定配置值!显式指定!显式指定!显式指定!显式指定!显式指定!显式指定!)

    6.2 core.safecrlf

    对于这个配置,没什么推荐的。保持默认也是可以的。

    6.3 为什么这么设置?

    你能保证你的团队全部人都用Windows吗?现在能保证,未来能保证吗?你的程序部署到Windows服务器吗?
    如果不能,最好的方案就是Windows用户设置全局变量core.autocrlf=true,Mac/Linux用户设置为 core.autocrlf=input,这样提交到远程仓库的都统一是LF,然后clone下来的又是各自平台的。

    对于你公司的已有的代码,其实挺麻烦的,可能存在以前不规范导致仓库上的代码会出现部分CRLF部分LF的情况,所以这些事情一开始就要做好,否则补救的代价就很大了

  • 相关阅读:
    程序员面试最反感的这件事,很多公司都会做
    springboot毕设项目大学生体质测试管理系统415ef(java+VUE+Mybatis+Maven+Mysql)
    利用电商数据API接口上货、铺货
    ARC121E Directed Tree
    JUC基础
    Kubernetes带你从头到尾捋一遍
    Redis入门
    路平石模具对于项目中建设细节的补充
    SpringBoot使用@Value获取不到yaml中配置的值
    银行转账p图手机软件,实现回执单截图生成,用Swing或JavaFX实现
  • 原文地址:https://blog.csdn.net/w8y56f/article/details/126027361