现象

同一个项目多个人开发的时候,每个人使用的OS可能不一样,有的使用Mac OS、有的使用Windows、有的使用Linux或Unix平台。虽然不同的系统都可以进行代码开发,但是不同系统的换行符是不一样的,在提交代码的时候甚至经常看到这方面的冲突。例如,本来代码是A同学使用Mac OS开发的,后来B同学加入,使用Windows系统开发,修改了go/servers/xxx.go文件,在使用git add go/servers/xxx.go命令添加修改内容到远程代码仓库的时候,就会出现下面的提示。


warning: CRLF will be replaced by LF in go/servers/xxx.go.
The file will have its original line endings in your working directory

原因

为什么会出现上面的问题呢?

UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是 0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致。但 DOS/Windows 一直使用 0x0D0A(CRLF) 作为换行符。所以会出现使用mac的开发者修改的代码中是lf换行,windows用户使用的crlf换行符,同时存在两种系统提交的代码时,总是会互相影响。

另外一个原因是,git默认配置autocrlf=true,即所有代码在添加提交时都会被提交成crlf,但是如果不同开发者配置的autocrlf不一致(比如,input或者false),就会出现总是互相覆盖的情况。

可以先查看一下git配置信息,命令如下:

git config -l

发现配置如下:

core.autocrlf=true   // 该配置使git自动将lf转换成crlf
core.fscache=true
core.symlinks=false
core.longpaths=true
pull.rebase=false
...

解决

首先,可以全局配置git禁止自动将lf转为crlf。然后,全局配置在提交时转换为lf。最后,配置crlf包含混合换行时拒绝提交。

// 修改git全局配置,禁止git自动将lf转换成crlf
git config --global core.autocrlf false// 配置全局git命令文件换行使用lf方式或者在terminal中对单个git代码仓库执行git config core.eol lf使用lf换行方式(这一步也可以不配置)
git config --global core.eol lf// 提交时转换为lf,检出时不转换
git config --global core.autocrlf input# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

上面,最重要的一部是

git config --global core.autocrlf input

也可以只配置这个命令。

参考

Git操作中crlf和lf冲突问题

git提示CRLF will be replaced by LF问题及解决相关推荐

  1. warning: CRLF will be replaced by LF in 出现的原因和解决办法

    主要原因是,不同系统下,文件的换行符是用不同字符表示的. Linux采用换行符LF表示下一行: Windows采用回车+换行CRLF表示下一行: Mac OS采用回车CR表示下一行. 解决方法是,切换 ...

  2. warning: CALF wilL be replaced by LF in xxxx 问题解决办法

    warning: CALF wilL be replaced by LF in xxxx 问题解决办法 参考:https://blog.csdn.net/huihuikuaipao_/article/ ...

  3. 【Tools】git提示“warning: LF will be replaced by CRLF”的解决办法

    原文链接:https://blog.csdn.net/u012757419/article/details/105614028 一.发现问题 windows平台下使用git add,git deplo ...

  4. Git 提示 “warning: LF will be replaced by CRLF“的思考

      在windows平台进行 git add 时, 控制台有时会打印警告 warning: in the working copy of 'XXX.sh', LF will be replaced b ...

  5. git提示“warning: LF will be replaced by CRLF”的解决办法

    一.发现问题 windows平台下使用git add,git deploy 文件时经常出现"warning: LF will be replaced by CRLF" 的提示. 网 ...

  6. git 提示error setting certificate verify locations 解决方案

    git 提示error setting certificate verify locations 解决方案 参考文章: (1)git 提示error setting certificate verif ...

  7. idea的Terminal的git提示密码,修改git配置文件配置

    idea的Terminal的git提示密码,修改git配置文件配置 1.找到该项目的.git文件夹: 2.修改config文件: 3.修改成[remote "origin"] ur ...

  8. git提示modified,但diff无内容

    git提示modified,但diff无内容 解决方法 解决方法 git add filename git reset 之前的modified自动消失

  9. Git创建ssh密匙时报错Too many arguments解决方法

    Git创建ssh密匙时报错Too many arguments解决方法 参考文章: (1)Git创建ssh密匙时报错Too many arguments解决方法 (2)https://www.cnbl ...

最新文章

  1. MOS管体二极管的作用
  2. 地图下载2之天超图瓦片格式
  3. 面试官:原生GAN都没复现过,自己走还是我送你?
  4. RuntimeWarning:Glyph 21435 missing from current font.
  5. 安装 SharePoint 2013
  6. linux 内存不足时候 应该及时回收page cache
  7. 【原创】Struts2.5.12版本中使用通配符*
  8. 基于ASP.Net Core开发的一套通用后台框架
  9. Applese 的QQ群
  10. 使用GitHub构建个人博客网站
  11. TFLearn MNIST
  12. 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
  13. ie11浏览器可以下载java吗_如何卸载IE11? 如何安装低版本的IE浏览器?
  14. 流水线上的农民:我在工厂种蔬菜
  15. 关于连接同一wifi,手机可以上网,电脑无法上网问题
  16. 我是如何在B站自学Java的?
  17. 学习记录:调用TFTLCD液晶屏
  18. Life with qmail -- 中文版(英文版本2 Jan 2006)
  19. RNN神经网络模型综述
  20. 模拟喷泉码(入门二):Seamless Rate Adaptation for Wireless Networking

热门文章

  1. 真爱永远不是遇见的,真爱是养成的
  2. 从指定 URL 读取图像并以 OpenCV 格式返回的函数(从指定 URL 读取图像并使其可由 OpenCV 处理。)
  3. blat+stunnel实践-命令行smtp发送邮件-通过QQ邮箱第三方客户端登录授权码
  4. “测温枪”到底是怎样测出你的温度的?
  5. matlab模拟三体运动_如何写出三体的MATLAB程序-理论分析篇
  6. 计算机专业英语谐音读法,英语48个音标中文谐音读法大全
  7. MX487EISA+替代MAX1487EESA+T的优势,货源渠道
  8. 制作DOS的U盘启动
  9. 那些令人印象深刻的书籍献词~ 一些有趣的书的献词
  10. 通达信 红线精准主升浪波段买卖选股指标 蝶形飞扬副图公式源码