git如何避免”warning: LF will be replaced by CRLF“提示?

作者:Andy Deng
链接:https://www.zhihu.com/question/50862500/answer/123197258
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

设置 core.autocrlf=true 后:
检出时,git 会把文本文件的换行符转化为 CRLF(只转化纯 LF 的文件)
提交时,把暂存区的内容(也就是我们对工作区做的改动)转化为 LF 然后放入版本库。

转化暂存区的内容时,如果发现里面存在 LF 换行符,LF 会被转化成 CRLF,并给出题主
提到的那条警告:"LF will be replaced by CRLF"

这句警告的下面其实还有一句很重要的话:
warning: LF will be replaced by CRLF in <file-name>.
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 换行符,就还会出现这个警告。

设置 core.autocrlf=true, 只要保持工作区都是纯 CRLF 文件,编辑器用 CRLF 换行,
就不会出现警告了(题主提的问题 2)。

git 默认让版本库里用 LF 换行,只要保持这条规则,多人协作就不会出什么大问题。
git 的 Windows 客户端基本都会默认设置 core.autocrlf=true
Linux 最好不要设置 core.autocrlf,因为这个配置算是为 Windows 平台定制。

如果 Windows 上设置 core.autocrlf=false,仓库里也没有配置 .gitattributes,很容
易引入 CRLF 或者混合换行符(Mixed Line Endings,一个文件里既有 LF 又有
CRLF)到版本库,这样就可能产生各种奇怪的问题(题主提的问题 1)。

如果有换行符不匹配本地平台的情况,我还是建议你用 dos2unix 之类的工具转换下换行
符,因为很多配置文件是严格要求文件编码和换行符的,谨慎一点比较好。

如果还有疑问,建议看看下面的链接:
1. Dealing with line endings
2. Git - 配置 Git
3. git-config(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值