关于不同系统的CRLF处理问题

昨天胖子在群里问了个git add将代码从工作区加入暂存区时出现CRLF和LF转换的问题,正好一年前我刚玩linux时候研究过一阵子这个问题,今天早上使用tcg/voyager时候也出现了这个问题,这里我就稍微说一下问题出现的原因以及处理的办法。

如果您在Windows上进行编程,但你的合作团队有人在MacOS或者Linux上编程,你可能遇到这篇文章的说明问题。这是因为Windows在其文件中使用换行符和换行字符,而Mac和Linux系统只使用换行字符。这是跨平台工作令人难以置信的烦人事实; Windows上的许多编辑器用CRLF替换现有的LF行的结尾,或者当用户点击Enter键时插入两个行结束字符

  • 首先我们必须知道现在电脑系统有windows,unix两大系列,unix下有很多变体称为类Unix系统,主要有MacOS,Linux,Hp-ux,Ibm-aix,Solaris等等。这其中由于Linux是开源集大成者,在它的体系中又衍生了以Fodora和Debian的两大阵营。类unix系统大多数时候是使用兼容的,但是windows和类unix系统之间无论是操作还是设计理念都不一样。

  • 这次要提到的问题,起源就在上面这段话中。类unix系统中,回车就是回车(carriage return),换行就是换行(line feed),它们绑定13和10两个ASCII码值,回车和换行分别简称CR和LF。编辑代码的时候,Windows系统里面,每行结尾是"<回车><换行>",即"\r\n";类Unix系统里,每行结尾是"<回车>"。

  • 这样会导致什么后果?Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

  • 那么胖子的git add操作中为什么会提示LF将会被替换为CRLF呢?主要可能有下面几个原因?

    • 团队开发,每个人实用的操作系统平台不同。
    • 胖子使用了双系统,开发时候切换系统进行编码。
    • 没有设置PhpStorm和Atom等常用IDE均有的LF绑定功能。
  • 解决办法呢?主要看你从git角度去解决还是文件角度去思考。如果你想把文件本身进行转换,请使用IDE的LF-CR绑定设置或者.editorconfig文件转换,如果你从代码提交暂存区或者仓库来考虑,那么Git有几个配置选项来帮助解决这些问题,你应该看看下面的几行代码:

git config core.autocrlf true

git config core.autocrlf input

git config core.autocrlf false

core.autocrlf这个设置应该在Windows检查中留下CRLF结尾,但是在Mac和Linux系统以及存储库中的LF结束。

  • 第一行:当你将文件添加到暂存区时,Git可以通过设置core.autocrlf将CRLF行结尾自动转换为LF来处理这类问题。如果您在Windows机器上,将其设置为true,那么当您pull代码时,将LF结尾转换为CRLF。

  • 第二行:如果您使用的是Linux或Mac系统,那么当您pull文件时,您不希望Git自动转换它们; 然而,如果你的Windows猪队友把未经处理带CRLF格式的文件push到远程代码库,那么你可能希望Git来自动解决这个问题。可以通过将core.autocrlf设置为input来告知Git将CRLF转换为LF。

  • 第三行:如果你是Windows程序员,只执行一个Windows项目或者所团队都是用windows系统甚至服务器都用windows,那么您可以关闭此功能,通过将配置值设置为false,将回车记录在存储库中。

  • 参考地址:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容