java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > IDEA和GIT关于文件中LF和CRLF问题

IDEA和GIT关于文件中LF和CRLF问题及解决

作者:入门小呆萌

文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.autocrlf配置(true、input或false)可解决不同场景下的换行符冲突问题

问题描述

项目软件安装shell脚本上git仓库管理,但拉取后,上linux运行报错。


问题思考

根据描述信息可以查看到\r字样,初步判别为换行符导致

1、将脚本文件移动至notepad++中,通过视图—>显示符号—>显示所有符号,一顿操作后,可以看到脚本中一串CRLF的符号


相关名词解释:

进而了解到普遍使用的编辑器IDEA因为默认是windows使用场景,所以换行符的默认设置为CRLF;但Shell脚本是在Linux下运行,则需要被替换为LF

在IDEA右下角,除了编码格式以外,还有个Line Separator


废话不多说,为了解决问题,就立马着手将所有的Shell脚本改成了LF

1、一劳永逸,杜绝后续类似问题的出现,可将IDEA的默认配置修改为了LF


*最后的选项,大致是允许IDEA的配置覆盖重写代码的样式设置;可视自身情况选择或取消,与本文影响不大

2、兴致冲冲,将修改后的代码提交后,让测试同事重新验证,emmm对面拉取的还是CRLF。尴尬要犯了

git的默认设置中有一个字段:core.autocrlf ,作用就是:

在push的时候会把CRLF转换成LF;pull的时候则会把LF转换成CRLF

原本Git这个自动转换的配置是在做好事儿,但是却坑苦了不懂它的人… …

OK!!!明白了原理,那么解决思路就来了

解决过程

以下命令在Git Bash中执行即可

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

综上:

1、编辑器本身的换行符问题

2、Git在提交和拉取过程的自动转换问题

问题解决!!!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文