Git 中换行符问题处理

这篇具有很好参考价值的文章主要介绍了Git 中换行符问题处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实习入职第一周就中遇到了一个问题,代码中新增了 shell 脚本,但是放到服务器上执行时,发生了 shell 脚本执行错误,这个是由于不同 OS 系统换行符不同而引起的问题,导致DolphinScheduler调度任务失败,在此记录。

1.\r 和 \n 区别

\r (return):表示回车,就是回到本行的行首
\n (newline):表示到下一行的行首
其历史渊源如下:

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做"回车",告诉打字机把打印头定位在左边界;另一个叫做"换行",告诉打字机把纸向下移一行。
这就是"换行"和"回车"的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有"<换行>“,即”\n";Windows系统里面,每行结尾是"<回车><换行>“,即”\r\n";Mac系统里,每行结尾是"<回车>"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

2.不同OS中的换行符问题

Window 中的文本文件换行符是 \r\n ,也就是 CRLR,对应 ASCII 码表中的 0xOD0A;而类 Unix 中换行符则为 \n ,也就是 LF(line feed),ASCII 码为 0x0A;早期 MAC 操作系统则为 \r ,也就是 CR(carriage return), ASCII 码为 0x0D,后来与 Unix 保持一致了。这次开发过程中遇到的问题就是,在 windows IDEA写完的 shell 脚本是 CRLF 换行符,上传Linux执行脚本时就因为这个 CRLF 换行符问题报了个语法错误。

3.IDEA中设置换行符

File > Settings > Editor > Code Style > 通过 Line separator 设置即可,设置完毕新建的文件都会以设置的换行符来换行。

4.Git中开启换行转换

git 中有换行符转换功能,Windows 下,Git 会将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);而在提交文件时,它又会将 CRLF 替换为 LF
转换参数设置

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


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

推荐修改为文章来源地址https://www.toymoban.com/news/detail-769792.html

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

到了这里,关于Git 中换行符问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git在Windows下 自动转换换行符 LF CRLF 的解决方案

    很多时候我们做开发是在Windows下,然后需要部署到Linux环境,但他们的换行符是不一样的,而Git默认的设置会开启转换,也就是文件在Git存储的时候都是LF ,然后我们在Win下拉代码,就会自动转换成CRLF,如果我们需要在Win下做调试,就很麻烦,而如果我们关闭自动转换,在代

    2024年02月15日
    浏览(50)
  • Linux 换行符替换问题(window换行\r\n转linux换行\n)

    使用vim打开文件, 进入“末行模式”,输入 :set ff=unix 回车执行,告诉编辑器改为unix换行符 输入 :w 回车,完成保存 相关参考: linux环境中替换window换行符为linux换行符

    2024年02月16日
    浏览(38)
  • UnityC#字串如何获取换行符号-最基础的字串处理方法,也最容易常见错误

    C# 里面的换行符号是 rn (Java的换行符号就不是 rn 了?应该这是windows的换行符号,mac并不如此,) 以下内容并没在mac 和 linux测过(一般linux也不需要字符串) 因为换行符是占两个位的 确实是第一个是 r,第二个是 n (不是\\\"\\\\r\\\") 一行行读取也是可行的,因为绕开了逐个字扫

    2024年02月12日
    浏览(52)
  • 【bug记录】-Linux与Windows中的文件换行符不同导致的格式问题

    当你从Windows移动文件到Linux系统时,可能会遇到文件格式问题。这通常涉及到文本文件的换行符(line endings)格式。 在Windows中,换行符是\\\"rn\\\"(Carriage Return + Line Feed) 而在Linux中,换行符是\\\"n\\\"(Line Feed)。 解决这个问题的方法之一是使用工具来转换文本文件的换行符格式。

    2024年02月04日
    浏览(48)
  • 前端处理后端返回的数据中有\n\n字样的换行符标识

    后端返回的数据: 上面圈着的部分就是n,前端需要将数据进行换行,对于这类型的数据,在前端页面是需要进行稍微处理才能正常显示。如果没有经过处理,那么内容是不会在有换行符的位置进行换行显示的 解决办法1: 使用css属性: pre-wrap:连续的空白符会被保留。在遇到

    2024年02月07日
    浏览(35)
  • uni-app开发微信小程序数据 \n 换行符失效问题

    前言 使用uni-app开发微信小程序时,使用text显示字符串(字符串带n),需要在n处直接换行。 1、本地字符串,可以直接换行显示。 2、后台返回字符串,直接换行失效。原因:渲染时 n 直接被当成字符串处理了,根本不识别。 效果图       实现 1、使用replace()方法,字符

    2024年02月15日
    浏览(55)
  • windows中的换行符

    用连续两个换行符来分隔文本 Regex reg = new Regex(@\\\"nn\\\"); string[] s = reg.Split(this.richtextbox1.text); 结果正常 Regex reg = new Regex(@\\\"nn\\\"); string[] s = reg.Split(System.IO.File.ReadAllText(txtfilepath)); 没有达到分割效果 所以稳定起见改成Regex reg = new Regex(@\\\"(nn)|(rnrn)\\\");就OK了

    2023年04月09日
    浏览(47)
  • notepad++去除换行符和空格

    在notepad++中按Ctrl+h 1.去除换行符 输入如图所示的查找内容为rn,【替换为】不填写,勾选底部的【正则表达式】,然后点击【全部替换】 2. 按照逗号换行 输入如图所示的查找内容为,,【替换为】rn,勾选底部的【正则表达式】,然后点击【全部替换】   2.去除空格 在替换

    2024年02月12日
    浏览(75)
  • Perl区分文件换行符类型

    在Windows上使用Perl判断文件时何种换行符时,处理CR LF类型的换行符时,也识别成了LF。 Windows上的换行是 CRLF , Unix上是 LF , Mac CR 在Windows平台使用Perl读取文件创建文件句柄时,未对file handler设置binmode,了解到binmode模型作用是采用非二进制读取模式时,双字节换行符CR LF在读取

    2024年02月07日
    浏览(45)
  • Python如何换行】:使用换行符来实现多行代码的编写和阅读

    在Python中,有时候我们需要编写较长的代码行,为了提高可读性和美观性,我们可以使用换行符来将代码分成多行。下面我将详细介绍如何在Python中实现换行,并提供相应的源代码示例。 在Python中,我们可以使用反斜杠()作为换行符。当我们在一行代码中使用反斜杠作为

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包