CRLF和LF

目录:

  1. 什么是CRLF和LF
  2. 为什么要探究CRLF和LF
  3. 三种方式处理的不同
  4. 更多
  5. 参考文献

1、什么是CRLF和LF

CRLF 是carriagereturnlinefeed的缩写。中文意思是回车换行。

LF是line feed的缩写,中文意思是换行。

2、为什么要探究CRLF和LF

在学习git软件,安装git到configuring the lien ending conversion时,有三个选项。

a. Checkout Windows-style,commit Unix-style line endings.

b.Checkout as-is,commit Unix-style line endings.

c.Checkout as-is,commit as-is line endings.

这里面讲到了做两个操作(Checkout,Commit)的三种处理line endings的操作(Windows-style,Unix-style,As-is)。

为什么会出现这三种处理line endings(行尾结束符)呢?在Git的帮助页面给出了很好的解释。

Reference From:https://help.github.com/articles/dealing-with-line-endings

If you‘re using Git to collaborate with others on GitHub, ensure that Git isproperly configured to handle line endings.

Every time you press return on your keyboard you‘re actuallyinserting an invisible character called a line ending . Historically, differentoperating systems have handled line endings differently.

When you view changes in a file, Git handles line endings in its own way.Since you‘re collaborating on projects with Git and GitHub, Git mightproduce unexpected results if, for example, you‘re working on a Windows machine,and your collaborator has made a change in OS X.

意思很好理解,就不翻译了。重视由于历史的原因,各种不同的操作系统在处理行尾结束符采取了不同的处理方法。而Git和GitHub

3、三种方式处理的不同

CRLF->Windows-style

LF->Unix Style

CR->Mac Style

CRLF表示句尾使用回车换行两个字符(即我们常在Windows编程时使用"\r\n"换行)

LF表示表示句尾,只使用换行.

CR表示只使用回车.

4、在Git中如何转换?

在Git通过下面的命令配置

$git config --global core.autocrlf true
# Configure Git on Windows to properly handle line endings

解释:core.autocrlf是git中负责处理line endings的变量,可以设置三个值--true,inout,false.

设置成三个值会有什么效果呢?

If core.autocrlf is set to true, that means that any time you add a file to the git repo that git thinks is a text file, it will turn all CRLF line endings to just LF before it stores it in the commit.。

设置为true,添加文件到git仓库时,git将其视为文本文件。他将把crlf变成lf。【2】

If core.autocrlf is set to false, no line-ending conversion is ever performed, so text files are checked in as-is. This usually works ok。【2】

设置为false时,line-endings将不做转换操作。文本文件保持原来的样子。

设置为input时,添加文件git仓库石,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。

这是参考文献2给的解释希望能帮助大家。

Yet another way to show how autocrlf works

1) true:             x -> LF -> CRLF
2) input:            x -> LF -> LF
3) false:            x -> x -> x

where x is either CRLF (windows-style) or LF (unix-style) and arrows stand for

file to commit -> repository -> checked out file

更多:

更为复杂的配置命令见网站:https://www.kernel.org/pub/software/scm/git/docs/git-config.html

关于LF和CRLF讨论见:http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf

You can also provide a special --global flag, which makes Git usethe same settings for line endings across every local Git repository on your computer.

参考文献

【1】https://help.github.com/articles/dealing-with-line-endings

【2】http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf

作者:gexiaochuan122 发表于2014-4-22 16:43:38 原文链接

时间: 2024-08-27 22:07:28

CRLF和LF的相关文章

[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF[ git 处理和修改行结束符(CRLF和LF)]

我自己的设置是: [core] autocrlf = false[core] safecrlf = true 取消自动转换CRLF(上图中选的是commit as is),但是有提交前混用检查 本人用的是WINDOWS下的PHPSTORM开发的PHP 遇到这两个错误,是因为Git的换行符检查功能. core.safecrlf Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项如下: false - 不做任何检查 warn 

Git中CRLF与LF的转换

1.换行符在不同的操作系统上的表示 首先要理解的一点是,对于不同的操作系统,对于换行符的表示是不一样的.也就是说当我们在编辑一个文件,在键盘上按下回车键的时候,对于不同的操作系统保存到文件中的换行符是不一样的.见下表: CR:表示回车\r LF:表示换行\n CRLF:表示回车换行\r\n 敲下回车键,不同的操作系统保存到文件中的值: Windows:使用的是CRLF ==> 即\r\n,文件中保存的是\r\n Linux/Unix: 使用的是LF ==> 即\n,文件中保存的是\n Mac

git crlf、lf自动转换引起的问题

??项目组最近加了一个新功能到代码中,使用flyway记录数据库版本变更,,,该工具会记录每次数据库结构的修改并生成sql文件存在指定目录上(当然必须用它来变更数据库,外部的变更它是无法感知的),然后每次启动时flyway会检查使用的数据库和当前项目代码中的sql变更版本是否一致,一致正常启动,不一致中如果是数据库落后将会更新数据库(这样能够保证代码在任何地方运行数据库都是一致的),否则就报错了.数据库中有一张表记录版本信息,如下图: 同时本地代码中也有一个文件夹保存每次操作的sql语句,如下图

Windows下Git使用报错:warning:LF will be replaced by CRLF in ××××.××

Windows下Git使用报错: warning:LF will be replaced by CRLF in ××××.××(文件名) The file will have its original line ending in your working directory. 翻译: 在xxx.xx文件中LF将被CRLF替换. 在工作区(working directory)里,这个文件将会保持它原本的换行符.(line ending:行尾,换行) 注解:           LF:Line F

[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF

遇到这两个错误, 基本上都是叫你将 autocrlf 设置为 false. 但是我觉得这样很不妥. 如果你的源文件中是换行符是LF,而autocrlf=true, 此时git add就会遇到 fatal: LF would be replaced by CRLF 的错误.有两个解决办法: 1. 将你的源文件中的LF转为CRLF即可[推荐] 2. 将autocrlf 设置为 false 如果你的源文件中是换行符是CRLF,而autocrlf=input,  此时git add也会遇到 fatal:

【git 问题小说说】 git add时候报错:LF will be replaced by CRLF

本文来自:http://blog.csdn.net/loovejava/article/details/22114477 最近工作在window平台,不怎么使用命令行了所以导致很多命令都不熟悉啦 哈哈 在家里图形工具在将修改好的代码提到本地git仓的时候出现了如下错误:[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片warning: LF will be replaced by CRLF fatal: CRLF would be replaced by

解决:git warning: LF will be replaced by CRLF in xxxx

一. git add -A报错 在利用git add -A添加文件时,意外的发现报错了 报错信息中: LF:Line Feed 换行 CRLF:Carriage Return Line Feed  回车换行键 大意是: 警告:today.txt(我要添加的文件名)中LF被CRLF替换 在工作区里,这个文件将会保持它原来的换行符 二. 什么原因 1. 不同操作系统的行尾结束符(换行符)是不同的 windows下:CRLF("\r\n",使用回车换行两个字符) unix下:LF("

IDEA换行CRLF, LF, CR的解释和默认设置

在window下开发有一个大坑,就是换行默认是CRLF,也就是回车换行,但是Linux下只有换行LF,这样代码提交后,会出现编译问题,所以最好的办法是在IDEA下设置默认为LF. 首先我们先介绍CRLF,LF和CR这三种东西,CR是MAC老版本的做法,就是回车,但是后来的MAC系统统一换成LF了,LF是Linux下的做法,就是换行,这个做法比较自然.微软采用的是CRLF,看上去好像是兼容了CR和LF,但是实际完全不是那么回事,就是回车并换行,微软一直保持这种做法,开发人员大多在Linux下,所以

Git warning:LF will be replaced by CRLF in readme.txt的原因与解决方案

今天用Git bash遇到的问题,看了几个回答之后发现一个比较有价值的,给大家分享一下,其他很多的回答都有很或多或少存在一些弊端. 原回答地址在stackoverflow上,附上链接--http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf 这里我把主要的东西提炼一下翻译成中文供大家参考. 首先问题出在不同操作系统所使用的换行符是不一样的,下面罗列一下三大主流操作系统的换行符: Uinx/Linux采用换行符LF