解决: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("\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

原文地址:https://www.cnblogs.com/cnhkzyy/p/9208273.html

时间: 2024-10-03 23:53:20

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

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

[GIT] warning: LF will be replaced by CRLF问题解决方法 博客分类: Rails git crlf rails 开发环境: 操作系统: windows xp ruby 1.9.2 rails 3.1.3 git version 1.7.8.msysgit.0 问题描述: 启动GIT: 新建了一个rails工程 Ruby代码   $ rails new blog 当切换到blog目录下执行 Ruby代码   $ git init $ git add . 系统

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

在使用git的时候,每次执行 #git add "目录" git add . 都会提示这样一个警告消息: warning: LF will be replaced by CRLF in XXXXXXXXXXXXXX. 虽然说没有什么影响吧. 不过就是觉得太碍眼了, 按照这样设置就没有问题了: git config core.autocrlf false 这样设置git的配置后在执行add操作就没有问题了.

[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),但是有提交前混用检查 本人用的是WINDOWS下的PHPSTORM开发的PHP 遇到这两个错误,是因为Git的换行符检查功能. core.safecrlf Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项如下: false - 不做任何检查 warn 

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

遇到这两个错误, 基本上都是叫你将 autocrlf 设置为 false. 但是我觉得这样很不妥. 如果你的源文件中是换行符是LF,而autocrlf=true, 此时git add就会遇到 fatal: LF would be replaced by CRLF 的错误.有两个解决办法: 1. 将你的源文件中的LF转为CRLF即可[推荐] 2. 将autocrlf 设置为 false 如果你的源文件中是换行符是CRLF,而autocrlf=input,  此时git add也会遇到 fatal:

[git] warning: LF will be replaced by CRLF | fata

遇到这两个错误,是因为Git的换行符检查功能. core.safecrlf Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项如下: false - 不做任何检查 warn - 在提交时检查并警告 true - 在提交时检查,如果发现混用则拒绝提交 建议使用最严格的 true 选项. core.autocrlf 假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这

[git] -- warning: LF will be replaced by CRLF in app/app.iml. The file will have its original line endings in your working directory.

遇到这个错误,因为是git的换行符检查功能.之前代码是在MAC下,后来放在windows系统下,git add .的时候报这个错误. core.safecrlf git 提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符. false --- 不做任何检查: warn --- 在提交的时候检查并报告: true --- 在提交时检查,如果发现混用则拒绝提交: 建议使用最严格的true选项. core.autocrlf 如果用两台不同系统的电脑写

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

如果你有git项目,在提交代码的过程中可能会碰到上面的警告,特别是的项目中包含序列化对象的时候,你可能要小心!! 警告的含义是说换行符的,不同的操作系统的换行符是不一致的,如果你不清楚,真得看看这个 git提供了一个解决方案来自动转化不同操作系统的换行符,以方便分布式协作 什么方案呢?看这里看这里

GIT warning: LF will be replaced by CRLF.

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

windows10下git报错warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory.

window10下使用git时 报错如下: $ git add readme.txtwarning: LF will be replaced by CRLF in readme.txt.The file will have its original line endings in your working directory. 意思大概是:LF(换行,Line Feed)将会被CRLF(回车换行,CarriageReturn)替代. 该文件将在工作目录中具有其原始行尾. 报这个警告时是由于文件夹