一. git add -A报错

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

报错信息中:

  • LF:Line Feed 换行

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

大意是:

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

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

二. 什么原因

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

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

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

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

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

 

解决:git warning: LF will be replaced by CRLF in xxxx的更多相关文章

  1. git warning: LF will be replaced by CRLF in 解决办法

    在使用git的时候,每次执行 #git add "目录" git add . 都会提示这样一个警告消息: warning: LF will be replaced by CRLF  ...

  2. [GIT] warning: LF will be replaced by CRLF问题解决方法

    原文链接[http://michael-roshen.iteye.com/blog/1328142] 开发环境: 操作系统: windows xp ruby 1.9.2 rails 3.1.3 git ...

  3. [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF[ git 处理和修改行结束符(CRLF和LF)]

    我自己的设置是: [core] autocrlf = false[core] safecrlf = true 取消自动转换CRLF(上图中选的是commit as is),但是有提交前混用检查 本人用 ...

  4. [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF

    遇到这两个错误,是因为Git的换行符检查功能. core.safecrlf Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项 ...

  5. git warning: LF will be replaced by CRLF in...

    如果你有git项目,在提交代码的过程中可能会碰到上面的警告,特别是的项目中包含序列化对象的时候,你可能要小心!! 警告的含义是说换行符的,不同的操作系统的换行符是不一致的,如果你不清楚,真得看看这个 ...

  6. GIT warning: LF will be replaced by CRLF.

    git config --global core.autocrlf false git config --global core.autocrlf false  

  7. VSCode git Warning LF will be replaced by CRLF

    本文参考自:http://www.yulongjun.com/linux/20170518-08-lf-cr/ 我们打开Visual Studio Code编辑器,可以看到右下角有这个LF,这是VS ...

  8. git出现warning: LF will be replaced by CRLF的解决方法

    今天ytkah用git上传文件的时候出现了warning: LF will be replaced by CRLF的错误,具体信息如下,这是因为跨平台开发下产生的.由于编辑器的不同或者Windows程 ...

  9. git add . 的时候遇到warning: LF will be replaced by CRLF in ...... 解决办法

    输 入 git add . 后出现 warning: LF will be replaced by CRLF in ...... The file will have its original lin ...

随机推荐

  1. el-tree 设置目录树中的某个节点为高亮状态

    现在可以实现,点击某个节点,该节点会红色高亮,那怎么让这个树加载出来的时候 默认某个节点高亮呢?element ui里面带勾选框的可以默认勾选上,这个没有勾选框 其实很简单.element ui的树形 ...

  2. MySQL中的索引提示Index Hint

    MySQL数据库支持索引提示(INDEX HINT)显式的高速优化器使用了哪个索引.以下是可能需要用到INDEX HINT的情况 a)MySQL数据库的优化器错误的选择了某个索引,导致SQL运行很慢. ...

  3. python多线程(二)

    开启线程的两种方式 #方式一from threading import Threadimport timedef sayhi(name):   time.sleep(2)   print('%s sa ...

  4. 解决You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgra

    直接运行命令:python -m pip install --upgrade pip

  5. 018-Spring Boot Starter开发

    自建spring-boot-starter artifactId命名 Spring 官方 Starter通常命名为spring-boot-starter-{name}如 spring-boot-sta ...

  6. microsoft cl.exe 编译器

    cl.exe是visual stdio 内置的编译器,visual stdio包含各种功能,有些功能可能这辈子都用不到,体积庞大,如果是 开发比较大或者有图形的项目,vs是首选.更多情况时更喜欢使用文 ...

  7. Shell Script Notes

    shell Script学习笔记 <鸟哥的Linux私房菜 3rd Edition>: @1:若变量内容中包含空格字符,则可使用双引号"或单引号'将变量内容结合起来,但不同的是: ...

  8. Linux yum源码包安装和卸载

    Linux 下的绝大多数源码包都是用 C 语言编写的,还有少部分是用 C++ 等其他程序语言编写的.所以,要想安装源码包,必须安装 C 语言编译器 gcc(如果是用 C++ 编写的程序,则还需要安装 ...

  9. php数组函数-array_diff()

    array_diff()函数返回两个数组的差集数组.该数组包括了所有在被比较数组中,但是不在任何其他参数数组中的键值在返回数组中,键名保持不变. array_diff(array1,array2,ar ...

  10. 第八篇、正则表达式 re模块

    一.常用匹配模式 #!/usr/bin/env python # -*- coding:utf-8 -*- import re #贪婪匹配:从后面开始 #()只需要提取括号中的内容,顺序从外到内 li ...