【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 更好的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 平台中,当使用 Git 的 "git add" 命令时,你可能会看到类似于 "warning: in the working copy of 'XXX.py', LF will be replaced by CRLF the next time Git touches it" 的警告信息。这是因为在 Windows 上,换行符的表示方式为 CRLF(回车换行),而在 Git 中,通常使用 LF(仅换行)来表示换行符。因此,Git 会在你执行 "git add" 操作时将文件中的 LF 换行符替换为 CRLF。这是为了确保在 Windows 平台上的文件与其他平台上的文件保持一致性。 为了解决这个警告,你可以使用以下命令来配置 Git 对换行符的处理方式: - 如果你是在 Windows 平台上进行开发,默认情况下,Git 会将 LF 换行符转换为 CRLF。你可以执行以下命令来设置这个选项:git config --global core.autocrlf true。 - 如果你是在 Linux 平台上进行开发,你可以执行以下命令来设置这个选项:git config --global core.autocrlf input。 - 如果你只在 Windows 平台上进行开发,并且不希望看到这个警告信息,你可以执行以下命令来设置这个选项:git config --global core.autocrlf false。 除了配置 "core.autocrlf" 选项之外,还可以使用 "core.safecrlf" 选项来控制提交文件时对换行符的检查: - 如果你希望拒绝提交包含混合换行符的文件,你可以执行以下命令:git config --global core.safecrlf true。 - 如果你允许提交包含混合换行符的文件,你可以执行以下命令:git config --global core.safecrlf false。 - 如果你希望在提交包含混合换行符的文件时给出警告,你可以执行以下命令:git config --global core.safecrlf warn。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值