今天把项目做完之后,然后用Git准备提交代码的时候,遇到warning: LF will be replaced by CRLF警告。
当时在网上查了资料,发现很多的解决办法都是:修改git全局配置,禁止git自动将LF转化成CRLF。命令是:git config --global core.autocrlf false.

LF和CRLF的真相是什么

1.LF和CRLF都是换行符,在各操作系统下,换行符是不一样的,Linux/UNIX下是LF,而Windows下是CRLF,早期的MAC OS是CR,后来的OS X在更换内核后和UNIX一样也是LF.
这种不统一确实对跨平台的文件交换带来了麻烦。虽然靠谱的文本编辑器和 IDE 都支持这几种换行符,但文件在保存时总要有一个固定的标准啊,比如跨平台协作的项目源码,到底保存为哪种风格的换行符呢?

2.Git 由大名鼎鼎的 Linus 开发,最初只可运行于 *nix 系统,因此推荐只将 UNIX 风格的换行符保存入库。但它也考虑到了跨平台协作的场景,并且提供了一个“换行符自动转换”功能。

  • 安装好 GitHub 的 Windows 客户端之后,这个功能默认处于“自动模式”。
  • 当你在签出文件时,Git 试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。
    所以Git在拉取代码的时候,git会自动将代码之中与你当前系统不同的换行方式自动转换成当前系统的换行方式。
    这样一来在提交代码的时候,git会认为你未修改内容的文件也认为是修改过的,然后提示你warning: LF will be replaced by CRLF这样的信息。

3.上面的解决办法固然解决了很多人的问题,但是在某些情况下就不适用。这次项目中,在用fiskit框架npm deploy打包前端文件到后端路径的时候,打包出来的文件用git进行commit的时候,提示LF和CRLF,文件的换行符被修改过,这时候也尝试了上面的方法,也没有用,最后在知乎上看到一篇文章https://www.zhihu.com/question/50862500,

有效的解决方法

如果设置core.autocrlf = false,那么很可能会出现CRLF和LF混合的情况,这样会导致一些问题,例如git diff 失去功能,会发现很多行代码并没有修改,然而被认为是修改过了。
首先core.autocrlf = true在windows上才是正确的选择,那么如何避免warning呢?还要有以下几个步骤:

  • 添加.gitattributes
  • 设置core.safecrlf = true
  • 使用dos2unix、notepad++等工具来将LF转换成CRLF

最新文章

  1. 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现
  2. What's Security
  3. Redis中的简单事物以及消息订阅发布
  4. Mybatis之关联查询
  5. (原创)通用查询实现方案(可用于DDD)[附源码] -- 设计思路
  6. HttpWebRequest模拟c#网站登录
  7. bzoj 2244 [SDOI2011]拦截导弹(DP+CDQ分治+BIT)
  8. 使用Navicat for Oracle 出现的错误
  9. java项目编码格式转换(如GBK转UTF-8)
  10. 201521123034《Java程序设计》第十三周学习总结
  11. 【Visual Studio 扩展工具】使用 ComponentOne迷你图控件,进行可视化数据趋势分析
  12. win10 linux 子系统 所在 目录
  13. TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
  14. git 查看某个文件的修改记录
  15. [LeetCode] 441. Arranging Coins_Easy tag: Math
  16. struct sk_buff和struct net_device
  17. 纯小白入手 vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
  18. 【ARTS】01_02_左耳听风-20181119~1125
  19. django http404 详解
  20. 在HTML中实现和使用遮罩层

热门文章

  1. 按键精灵MySql数据库操作
  2. Linux下用到数据库sqlite3
  3. leetcode 之Remove Duplicates from Sorted Array(2)
  4. python抓取链家房源信息(二)
  5. docvalue and fielddata
  6. ios app应用在显示屏幕上改中文名
  7. 洛谷 P2241统计方形(数据加强版) 题解
  8. MVC基础知识 – 2.新语法
  9. php面向对象中public与var的区别
  10. JS循环、数组与练习题