问题描述:
项目软件安装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问题的更多相关文章

  1. [转]git在eclipse中的配置

    一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EGit 二_使用EGIT前的配置 配置个 ...

  2. 【转】git在eclipse中的配置

    原文网址:http://www.cnblogs.com/zhxiaomiao/archive/2013/05/16/3081148.html 一_安装EGIT插件 http://download.ec ...

  3. git在eclipse中的配置 转载

    git在eclipse中的配置 转载 一_安装EGIT插件 http://download.eclipse.org/egit/updates/ 或者使用Eclipse Marketplace,搜索EG ...

  4. git ignore文件

    创建.gitignore文件来设置git要忽略的文件模式: 官方文件列列表:https://github.com/github/gitignore 1. 所有空行或者以 # 开头的行都会被 Git 忽 ...

  5. git 中关于LF 和 CRLF 的问题

    git 中关于LF 和 CRLF 的转换问题注意: Windows下编辑器设置中,建议调整设置为Unix风格.(具体设置位置各种编辑器上不同,需要找找) 使用Git Bash进行命令行操作时,运行一下 ...

  6. git忽略文件并删除git仓库中的文件

    问题描述 不慎在创建.gitignore  文件之前的时候将文件push到了 git仓库,即使之后在.gitignore文件中写入新的过滤规则,这些规则也不会起作用的,git依然会对所有git仓库中的 ...

  7. 用python 替换文件中的git地址

    有个需求要替换文件中git地址,要替换成的git地址是一个变量 本来想用sed替换但是git地址中有斜杠符号 需要转义,提前知道还好弄,如果是变量就不好处理了 #!/usr/bin/python3 # ...

  8. git 把文件从 版本管理中移除 andorid版本

    刚学git时,一股脑吧所有文件全部加到版本管理中,现在做Android开发,这样做就有很大的问题了,gen  和bin  文件夹下的文件是编译生成的,最好不要加到版本管理中,最好加入到.gitigno ...

  9. Eclipse中使用GIT提交文件至本地

    GIT提交文件至本地: 1.  右击项目——Team——Commit…: 2.在弹出的Commit Changes框中——选择要提交的文件——填写提交说明——点击Commit,即可提交至本地.

  10. git忽略项目中的指定文件

    git仓库提交原则:提交给远程仓库的只有源代码和相关的配置文件 如果是使用模板建立的仓库,会自带有.gitignore文件,无需再建立.当然如果需要在指定文件忽略,只需要在这个文件中添加指定的文件即可 ...

随机推荐

  1. Java日期时间API系列28-----Jdk8中java.time包中的新的日期时间API类,计算节假日和二十四节气。

    1.节日信息计算代码 package com.xkzhangsan.time.holiday; import java.time.DayOfWeek; import java.time.LocalDa ...

  2. ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南续篇

    作者:运维有术 前言 知识点 定级:入门级 KubeKey 安装部署 ARM 版 KubeSphere 和 Kubernetes ARM 版 KubeSphere 和 Kubernetes 常见问题 ...

  3. 快速部署kafka集群和可视化界面

    3台机器部署kafka集群的分布 10.1.161.111 -> kafka(1个节点)+ zookeeper(一个节点)+ kowl(一个节点) 10.1.161.112 -> kafk ...

  4. 为你的Windows用户设置无边框半透明头像

    步骤一:锁定头像 Win+R输入gpedit.msc进入组策略编辑器,按图中所示,选择"计算机管理->管理模板->用户账户设定",将里面唯一选项"对所有账户使 ...

  5. JavaScript String 对象-常用知识点

    JavaScript String 对象-常用知识点 对象用于处理文本(字符串). 对象创建方法: new String(). String 对象属性 属性 描述 constructor 对创建该对象 ...

  6. C++ 简易消息循环

    前言 本文将向大家介绍如何使用 C++ 的标准库实现一个异步和并发编程中都非常重要的编程模式:消息循环(Event Loop).尽管市面上存在不少库也提供了同样的功能,但有时候出于一些原因,我们并不想 ...

  7. Issac_GYM重要过程记录

    1 下载相关文件 进入github中下载相关的文件 https://github.com/leggedrobotics/legged_gym 2 加载自己绘制的URTL文件 这个链接用来下载宇树的Go ...

  8. 7. jenkins的代码审查

    sonar基本使用 1,sonar安装和配置 SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误.目前 支持java,C#,C/C++,Python,PL/S ...

  9. 自动化构建镜像:Packer

    在介绍Packer之前,先来回顾一下未使用Packer时自定义虚拟机镜像的步骤.先在本地启动一个虚拟机,从安装系统开始,再进行自定义配置或应用安装,最后封装压缩成镜像,详细操作步骤可以参考我之前写的文 ...

  10. 手搓党分享:用Air700E开发板+毫米波雷达,搓一个睡眠监测仪!

    ​ 只能说,看到这个大佬分享的睡眠监测仪,手上的手环瞬间不香了... 用Air700E开发板+毫米波雷达,手搓一个开箱即用的睡眠监测仪,不花冤枉钱! 一.项目原理及硬件制作 毫米波是指频率范围从30- ...