git项目换行符LF与CRLF不同导致的更新问题
转载自jiayaoO3O's Blog。
遇到的问题
在windows中git clone一个代码仓库,拷贝到ubuntu环境下,出现了所有文件都被git记录已更改的问题,但肉眼看不出来文件不同。
原因是windows中默认换行用的CRLF(回车+换行),而linux环境下默认用的LF(换行),于是所有文件都被标注被更改。
解决方法
git有一个autocrlf配置,可以在我们提交时自动转换换行符,它有3个选项:
- true: 提交时转换为 LF,检出时转换为 CRLF
- false: 提交检出均不转换
- input: 提交时转换为LF,检出时不转换
另一个设置项safecrlf用于检查文件是否包含着混合换行符,也有3个选项:
- true: 拒绝提交包含混合换行符的文件
- false: 允许提交包含混合换行符的文件
- warn: 提交包含混合换行符的文件时给出警告
所以,如果我们要将已经加入git的大量CRLF结尾文件批量转换成LF结尾的文件,可以这样设置:
git config --global core.autocrlf input
git config --global core.safecrlf warn
这样设置之后,先将项目提交一次,这样所有的文件就都会被改成LF结尾.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)