默认的换行符在各操作系统下是不一致的,Windows 是 CRLF(’\r\n’),Mac、Linux是 LF(’\n’)。

在一些项目中,会严格限制换行符,比如在项目根目录下 .editorconfig 中设置 end_of_line = lf,当你在 Mac 下开发之后,在 Windows 上 clone 代码时, git 会自动将换行变更为系统默认的换行(’\r\n’),而且还是项目级别的。

原因

git 会依据平台自动变更文件换行符,这是项目级别的。

解决办法

配置 git

# windows 下是 autocrlf

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

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

# 推荐,项目中指定了换行,则在任何平台都只用一种换行 \n
#提交检出均不转换
git config --global core.autocrlf false

SafeCRLF

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

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

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

IDE 设置换行

Webstorm 中,File -> Settings -> Editor -> Code Style -> Line separator -> Unix and macOS


关注公众号 止水聊技术,即送技术资料,您的支持是我最大的动力
lxfriday_xyz

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐