• 解决:git warning: LF will be replaced by CRLF in xxxx


    一. git add -A报错

    在利用git add -A添加文件时,意外的发现报错了

    报错信息中: 

    • LF:Line Feed 换行

    • CRLF:Carriage Return Line Feed  回车换行键

    大意是:

    警告:today.txt(我要添加的文件名)中LF被CRLF替换

    在工作区里,这个文件将会保持它原来的换行符

    二. 什么原因

    1. 不同操作系统的行尾结束符(换行符)是不同的

    • windows下:CRLF(" ",使用回车换行两个字符)

    • unix下:LF(" ",只使用换行)

    • mac下:CR(" ",只使用回车)

    2. 使用Git Bash,相当于Linux环境

    3. 我的文件也是通过touch today.txt和vim today.txt写入的,这种情况下换行符是Linux下的LF

     

    4. git工作区默认以CRLF来作为换行符,如果我们的文件中使用LF作为换行符,这时我们继续git add或git commit就会弹出警告,当最终push到远程仓库的时候,git会统一转化,最终以CRLF作为换行符

    5. 如何理解 "The file will have its original line endings in your working directory." 

    简单来说,设置 core.autocrlf=true 后,我们工作区的文件都应该用 CRLF 来换行。如果改动文件时引入了 LF,或者设置 core.autocrlf 之前,工作区已经有 LF 换行符。提交改动时,git 会警告你哪些文件不是纯 CRLF 文件,但 git 不会擅自修改工作区的那些文件,而是对暂存区(我们对工作区的改动)进行修改。也因此,当我们进行 git add 的操作时,只要 git 发现改动的内容里有 LF 换行符,就还会出现这个警告

    三. 解决方案

    1. git中如何处理"换行"(line ending)

    core.autocrlf是git中负责处理line ending的变量,可以设置三个值:true, false, input,默认是true

    • true:这意味着当你添加文件到git仓库时,git都会视它为文本文件,将其换行符LF转化为CRLF

    • false:当设置成false时,line endings将不做转换操作。文本文件保持原来的样子

    • input:设置为input时,添加文件git仓库时,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置

     2. 使用 git config --global core.autocrlf false 来解决

    3. core.autocrlf设置为false的风险

    多人协作开发时,如果 windows 上设置 core.autocrlf=false,仓库里也没有配置 .gitattributes,很容易引入 CRLF 或者混合换行符(Mixed Line Endings,一个文件里既有 LF 又有CRLF)到版本库,这样就可能产生各种奇怪的问题

    如果有换行符不匹配本地平台的情况,建议用 dos2unix 之类的工具转换下换行符,因为很多配置文件是严格要求文件编码和换行符的,谨慎一点比较好




     

    参考文章

    https://www.cnblogs.com/helloHKTK/p/7351946.html

    https://blog.csdn.net/wowoniuzailushang/article/details/54317129

    https://www.zhihu.com/question/50862500/answer/123197258

     
  • 相关阅读:
    Win10以管理员身份运行Loadrunner11时候提示“管理员已阻止你运行此应用”
    logrotate日志切割
    Scala的型变
    Caused by: com.esotericsoftware.kryo.KryoException: Buffer overflow. Available: 0, required: 134217728
    ERROR BatchJobMain: Task not serializable
    Spark创建HiveContext报错tez的问题
    Spark初始换HiveContext空指针异常
    windows10专业版 操作系统无法监听远程端口
    windows环境如何上传项目到gitee
    canal-kakfa-flink实现mysql数据的实时同步(一)
  • 原文地址:https://www.cnblogs.com/my_captain/p/9208273.html
Copyright © 2020-2023  润新知