浅谈CR,LF和CRLF

二次信任 提交于 2020-01-16 03:17:12

以Pycharm为例:
在这里插入图片描述
点击CRLF,有三个可供选择:
在这里插入图片描述
在这里插入图片描述
其实注释得很明白:

  • CR用于Mac下,作用相当于 \r
  • LF用于Unix下,作用相当于 \n
  • CRTF用于Windows下,作用相当于 \r\n

简单介绍下三者:
CR:Carriage Return
LF: Line Feed
CRTF:Carriage Return Line Feed
其实这个根源于打印机时代,现代键盘由以前的打印机键盘演变而来,在打印机时代换行是通过xxxxxx
而这个传统延申到了现代,在Mac下,文本的换行体现在代码(ASCII)层面是\r,Unix下是\n,Windows下是\r\n。在协同工作时就可能出现问题,如三个人使用三个平台通过Git修改一份文件,如果不经过任何处理,则三个人每次提交的文件都和之前的文件冲突(假设最近一次修改不是自己)—— 换行符不一样。
为了解决这个问题,IDE提供了这样一个跨操作系统的自定义模式:自己设置换行方式。
回到之前的问题,现在三个人都约定好:我们将IDE的换行方式都设置为CRLF进行开发,这样提交git就不会冲突了。
但是,在实际开发中,这其实是不实用的,在终端跨平台去约定每个人的开发习惯不安全也不方便。所幸Git本身提供这样的功能:设置autocrlf属性,具体设置详见关于CRLF的一些坑,一般而言,这个属性有三个值:

  • true:拉取时总是将本地仓库换行方式转化为LF存储至远程仓库,拉取时总是将远程库LF转换成本地库换行方式。
  • false:不做转换,总是提交本地换行方式,总是拉取远程库换行方式。
  • input:提交时总是将本地仓库换行方式转化为LF存储至远程仓库,拉取不做转换。

一般而言,在Windows下设置为true,这样保证由Windows终端提交的代码总是以LF方式保存在远程库中,而mac/unix本地默认的换行方式就是LF(Mac最初时CR,现在已经变成了LF),所以原则上可以设置为false,但是为了防止哪个windows小伙不守规矩( 没有设置为true),或者哪个不长眼的没有提交为LF,一般也可以设置为input。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!