【随笔】不同系统间以及git软件仓库的行尾坑(LF和CRLF)

不同操作系统间的文本行尾差异首先要明确CR和LF的概念:CR= Carriage Return= 回车= \rLF= Line Feed= 换行= \nWindows=CRLF=\n\rUnix系=LF=\n——包括linux&macWindows操作系统与Unix系操作系统的默认行尾符是不一样的,这直接影响到所有能够以文本形式读写的文件。比如在Windows下新建一个文本文...
摘要由CSDN通过智能技术生成

不同操作系统间的文本行尾差异

首先要明确CR和LF的概念:

CR= Carriage Return= 回车= \r
LF= Line Feed= 换行= \n
Windows=CRLF=\n\r
Unix系=LF=\n——包括linux&mac

Windows操作系统与Unix系操作系统的默认行尾符是不一样的,这直接影响到所有能够以文本形式读写的文件。

比如在Windows下新建一个文本文件(各种语言的源代码、脚本、html、json、纯文本等本质上都是文本文件),会默认每一行的结束符为/n/r,如果把这个文件复制到Linux下用vim打开,则会显示每一行有一个未知字符^M,即Linux只能识别\n字符,而无法识别\r字符。如果这个文件是一个shell脚本,那么必然执行失败。

github的行尾转换(可能导致项目崩溃的bug)

github为了解决这个问题,添加了自动转换行尾符的功能,在提交到远程仓库时,会根据git的设置自动静默修改文件内容,然而这个功能又创造了另一个大坑。

非代码文本文件(如字体、矢量图等)

这类文件有着特定的内容规范,独立于系统,内部选择CRLF/LF完全由自己决定,用不着外部插手,一旦被外部修改则文件损坏。github的坑就在这里,如果没有设置好,那么就会篡改项目里的字体、矢量图等文件,导致文件崩坏。我不知道版本回退能否恢复,但版本回退只是亡羊补牢而已,并不能否认这个问题的严重性。已经有很多人中招

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值