解决跨平台合作开发中,win换行符问题

本文探讨了在Windows环境下使用Git时遇到的换行符问题,包括错误信息“fatal:CRLFwouldbereplacedbyLF...”的出现原因及解决方案。介绍了Git的autocrlf和safecrlf配置项,以及如何通过.gitattributes文件来统一项目中的文件格式,确保跨平台的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)前言

其实大情况下,win除了开机慢,软件打开慢,而且卡顿,安装包时候可能会出现一些问题外,也没那么多坑,

(二)页面性能分析网址
当我们做完一个页面,肯定要分析,加载渲染速度等一系列问题,那么我们会怎么来处理这些问题,谷歌提供一个在线网站,可以帮你分析一部分问题,链接地址如下

https://developers.google.com/speed/pagespeed/insights

(三)踩坑换行符

如果我们项目中使用了.editorconfig来统一平台文件格式,那么在win时候,你会发现一个很有趣的现象,当我们使用git add . 通常会发生如下错误,

$ git add .
fatal: CRLF would be replaced by LF ...

当然,这问题是很久发生了,目前主流系统如下

UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF) 作为换行符。

最大的问题是,在不同平台上,换行符发生改变时,Git 会认为整个文件被修改,这就造成我们没法 diff,不能正确反映本次的修改。

还好 Git 在设计时就考虑了这一点,其提供了一个 autocrlf 的配置项,用于在提交和检出时自动转换换行符,该配置有三个可选项:

# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input

# 提交检出均不转换
git config --global core.autocrlf false

如果把 autocrlf 设置为 false 时,那另一个配置项 safecrlf 最好设置为 ture。该选项用于检查文件是否包含混合换行符,其有三个可选项:

# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

# 允许提交包含混合换行符的文件
git config --global core.safecrlf false

# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

如果涉及到在多个系统平台上工作,推荐将 git 做如下配置:

$ git config --global core.autocrlf input
$ git config --global core.safecrlf true

但是实际项目,你会发现编辑器ide也可能帮你在切换分支时候,自动装换。通过设置 gitattributes文件来实现这个功能,

https://github.com/alexkaratarakis/gitattributes

首先,我们在根文件下新建.gitattributes文件,然后点开上面web的链接地址,
在.gitattributes内部添加如下内容

## GITATTRIBUTES FOR WEB PROJECTS
#
# These settings are for any web project.
#
# Details per file setting:
#   text    These files should be normalized (i.e. convert CRLF to LF).
#   binary  These files are binary and should be left untouched.
#
# Note that binary is a macro for -text -diff.
######################################################################

# Auto detect
##   Handle line endings automatically for files detected as
##   text and leave all files detected as binary untouched.
##   This will handle all files NOT defined below.
*                 text=auto

# Source code
*.bash            text eol=lf
*.bat             text eol=crlf
*.cmd             text eol=crlf
*.coffee          text
*.css             text
*.htm             text diff=html
*.html            text diff=html
*.inc             text
*.ini             text
# 单独处理来js文件
*.js              text eol=lf
// ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值