IDEA和GIT关于文件中LF和CRLF问题
问题描述:
项目软件安装shell脚本上git仓库管理,但拉取后,上linux运行报错。
问题思考:根据描述信息可以查看到\r字样,初步判别为换行符导致
1、将脚本文件移动至notepad++中,通过视图—>显示符号—>显示所有符号,一顿操作后,可以看到脚本中一串CRLF的符号
相关名词解释
CR:Carriage Return,对应ASCII中转义字符\r chr(13),表示回车
LF:Linefeed,对应ASCII中转义字符\n chr(10),表示换行
CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行
进而了解到普遍使用的编辑器IDEA因为默认是windows使用场景,所以换行符的默认设置为CRLF;但Shell脚本是在Linux下运行,则需要被替换为LF
在IDEA右下角,除了编码格式以外,还有个Line Separator
废话不多说,为了解决问题,就立马着手将所有的Shell脚本改成了LF
一劳永逸,杜绝后续类似问题的出现,可将IDEA的默认配置修改为了LF
*最后的选项,大致是允许IDEA的配置覆盖重写代码的样式设置;可视自身情况选择或取消,与本文影响不大
2、兴致冲冲,将修改后的代码提交后,让测试同事重新验证,emmm对面拉取的还是CRLF。尴尬癌都要犯了
首先怀疑是git未能识别到CRLF和LF这类修改
尝试将文件删除后commit & push再新增LF格式文件后 commit & push
失败!!!
在搜了Git LF和CRLF问题后,发现此事儿有点猫腻
git的默认设置中有一个字段:core.autocrlf ,作用就是:
在push的时候会把CRLF转换成LF;pull的时候则会把LF转换成CRLF
原本Git这个自动转换的配置是在做好事儿,但是却坑苦了不懂它的人… …
OK!!!明白了原理,那么解决思路就来了:
以下命令在Git Bash中执行即可
场景一、代码在window提交,在windows使用(即默认场景)
$ git config --global core.autocrlf true
场景二、代码在windows提交,在Linux或者Mac系统或者Jenkins上专门打包为服务器使用,无需Git在pull时进行自动转换;(即Git在push时把CRLF转换成LF,pull时不转换)
$ git config --global core.autocrlf input
场景三、不想要Git自动转换:
$ git config --global core.autocrlf false
综上:
1、编辑器本身的换行符问题
2、Git在提交和拉取过程的自动转换问题
IDEA和GIT关于文件中LF和CRLF问题的更多相关文章
- [转]git在eclipse中的配置
一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EGit 二_使用EGIT前的配置 配置个 ...
- 【转】git在eclipse中的配置
原文网址:http://www.cnblogs.com/zhxiaomiao/archive/2013/05/16/3081148.html 一_安装EGIT插件 http://download.ec ...
- git在eclipse中的配置 转载
git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...
- git ignore文件
创建.gitignore文件来设置git要忽略的文件模式: 官方文件列列表:https://github.com/github/gitignore 1. 所有空行或者以 # 开头的行都会被 Git 忽 ...
- git 中关于LF 和 CRLF 的问题
git 中关于LF 和 CRLF 的转换问题注意: Windows下编辑器设置中,建议调整设置为Unix风格.(具体设置位置各种编辑器上不同,需要找找) 使用Git Bash进行命令行操作时,运行一下 ...
- git忽略文件并删除git仓库中的文件
问题描述 不慎在创建.gitignore 文件之前的时候将文件push到了 git仓库,即使之后在.gitignore文件中写入新的过滤规则,这些规则也不会起作用的,git依然会对所有git仓库中的 ...
- 用python 替换文件中的git地址
有个需求要替换文件中git地址,要替换成的git地址是一个变量 本来想用sed替换但是git地址中有斜杠符号 需要转义,提前知道还好弄,如果是变量就不好处理了 #!/usr/bin/python3 # ...
- git 把文件从 版本管理中移除 andorid版本
刚学git时,一股脑吧所有文件全部加到版本管理中,现在做Android开发,这样做就有很大的问题了,gen 和bin 文件夹下的文件是编译生成的,最好不要加到版本管理中,最好加入到.gitigno ...
- Eclipse中使用GIT提交文件至本地
GIT提交文件至本地: 1. 右击项目——Team——Commit…: 2.在弹出的Commit Changes框中——选择要提交的文件——填写提交说明——点击Commit,即可提交至本地.
- git忽略项目中的指定文件
git仓库提交原则:提交给远程仓库的只有源代码和相关的配置文件 如果是使用模板建立的仓库,会自带有.gitignore文件,无需再建立.当然如果需要在指定文件忽略,只需要在这个文件中添加指定的文件即可 ...
随机推荐
- OOOPS:零样本实现360度开放全景分割,已开源 | ECCV'24
全景图像捕捉360°的视场(FoV),包含了对场景理解至关重要的全向空间信息.然而,获取足够的训练用密集标注全景图不仅成本高昂,而且在封闭词汇设置下训练模型时也受到应用限制.为了解决这个问题,论文定义 ...
- 数据库故障处理优质文章汇总(含Oracle、MySQL、MogDB等)
数据库告警.紧急问题处理这些项目对于大多数朋友来讲应该不陌生了.从墨天轮社区整理的"最受DBA欢迎的技术文档合辑"系列中可以发现,大家对"故障诊断专题"的热情居 ...
- unable to find sdk 'iphoneos XX' 报错
解决方法: Build Setting->Base SDK->修改为iOS
- C#的 ArrayList集合 和 List 集合
// 集合 & 字典的初识 // 集合的使用 // 集合与数组比较类似,都用于存放一组值 // 数组的优劣势分析 // 1. 优势:数组在内存中是连续存储的,所以他的索引速度非常的快,而且赋值 ...
- Android复习(六)核心组件—>Activity 任何和返回栈、进程和应用生命周期、Parcelable和Bundle
了解任务和返回堆栈 任务是用户在执行某项工作时与之互动的一系列 Activity 的集合.这些 Activity 按照每个 Activity 打开的顺序排列在一个返回堆栈中.例如,电子邮件应用可能有一 ...
- 基于 KubeSphere 的 AI 平台开发实践
概述 本文基于 "KubeSphere & Friends 2021 Meetup 北京站" 分享主要内容整理而来,详细内容建议观看视频,本文有一定删减. 作者:胡涛(Da ...
- MongoDB聚合类操作
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 语法:db.tablename.aggregat ...
- Centos7下Docker搭建Matomo
1.docker安装和启动 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repo ...
- Docker和k8s核心概念(理解友好版)
背景 这是在HWL负责网校云业务线测试时,给同事分享的基础概念文档. 目录: 一. Docker核心概念 二. Kubernetes是什么及架构 三. Kubernetes核心概念 四. Deploy ...
- Xor-FWT 的另一种理解方式
Xor-FWT 的另一种理解方式 学习 \(\text{Fennec's Algorithm}\) 的额外收获,顺手记录一下. 假设我们要求两个长度为 \(n\) 的数组的异或卷积,为方便起见令 \( ...