zoukankan      html  css  js  c++  java
  • 解决: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

     
  • 相关阅读:
    敏捷软件开发之何为敏捷开发
    在DataGridView控件中实现冻结列分界线
    VS2010 Extension实践(2)
    如何使用MOQ进行单元测试
    把WPF Dialog转成WinForm Dialog需要注意的问题续
    浅析Web数据存储Cookie、UserData、SessionStorage、WebSqlDatabase
    VS2010 Extension实践(3)——实现自定义配置
    Url Rewrite 再说Url 重写
    团购网火了?
    从Component对象到CodeDom——舞动你的Code系列(1)
  • 原文地址:https://www.cnblogs.com/my_captain/p/9208273.html
Copyright © 2011-2022 走看看