【git】LF will be replaced by CRLF the next time Git touches it 或 warning: LF will be replaced by CRLF

背景

mac/linux系统默认采用LF(换行符),而window采用CRLF(回车符)
在这里插入图片描述

git图解

首先,警告产生的原因是 git 的 core.autocrlf 配置为 true 时,git add 发现了需要提交的内容存在 LF 换行符,如下图在这里插入图片描述
简单来说,设置 core.autocrlf=true 后,git 会认为工作区的文件都应该用 CRLF 来换行,如果工作区因为新增或编辑出现了 LF 换行符的文件,git add 这些文件时,发现准备提交的文件是 LF 作为换行符,就会出现这个警告,并提示哪些文件是 LF 换行的(但 git 不会对工作区这些文件做换行符的转换)

当设置 core.autocrlf=true 时, 解决问题最简单的方式是,只要保持工作区文件都用 CRLF 换行,编辑器设定为用 CRLF 换行,就不会出现警告了。

在这里插入图片描述

但 core.autocrlf=true 是有争议的配置,感兴趣可以往下看。

这里引出了一个问题,就是 core.autocrlf=true 这个设置是合理的吗?首先在 Windows 下有很多人遇到这个 “LF will be replaced by CRLF” 告警,可能是因为 Git Bash 在安装时默认设置了core.autocrlf=true,如图

在这里插入图片描述

红框为安装时默认设置回到题主提到的问题 1:在实际开发中,是存在软件工具严格要求配置文件的编码和换行符的情况,让 git 在 checkout 和 commit 时自动转换换行符不一定是件好事。并且在多人协作时,没法确保所有人的 core.autocrlf 都是同样的配置。因此 core.autocrlf 这个配置需要在了解清楚后再进行使用。比较推荐的做法是使用 .gitattributes[1] 指定项目中各类文件适用的换行符。关于 core.autocrlf这个配置可以设定三个值,分别是 true,input,false,每个配置的具体行为可以看上面那张安装界面的截图。比较有意思的是,当设置为 input 时,如果 git add 了 CRLF 换行的文件时,会出现和题目相反的警告: " CRLF will be replaced by LF in … " 这两种警告都会提醒那些被 git 的自动转化换行符行为影响到的文件,这些文件在别处重新检出时可能会得到不同的换行符。而配置了 .gitattributes 却可以保证在各平台多人协作时文件属性的一致性,.gitattributes 会覆盖 core.autocrlf 的设置,在多数情况下是比 core.autocrlf 更好的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值