首页 > 其他分享 >git提示“warning: LF will be replaced by CRLF”(转载)

git提示“warning: LF will be replaced by CRLF”(转载)

时间:2023-07-06 15:14:51浏览次数:41  
标签:LF core git 换行 will Windows 回车

一、发现问题

windows平台下使用git add,git deploy 文件时经常出现“warning: LF will be replaced by CRLF” 的提示。

网上很多解决办法提到:

设置core.autocrlf=false,windows也用LF换行。

二、分析问题

格式化与多余的空白字符,特别是在跨平台情况下,有时候是一个令人发指的问题。由于编辑器的不同或者文件行尾的换行符在 Windows 下被替换了,一些细微的空格变化会不经意地混入提交,造成麻烦。虽然这是小问题,但它会极大地扰乱跨平台协作。
其实,这是因为在文本处理中,CR(CarriageReturn),LF(LineFeed),CR/LF是不同操作系统上使用的换行符,具体如下:

换行符‘\n’和回车符‘\r’

  • 回车符就是回到一行的开头,用符号r表示,十进制ASCII代码是13,十六进制代码为0x0D,回车(return);
  • 换行符就是另起一行,用n符号表示,ASCII代码是10,十六制为0x0A, 换行(newline)。

所以我们平时编写文件的回车符应该确切来说叫做回车换行符。

应用情况

  • Dos和Windows平台: 使用回车(CR)和换行(LF)两个字符来结束一行,回车+换行(CR+LF),即“\r\n”;
  • Mac 和 Linux平台:只使用换行(LF)一个字符来结束一行,即“\n”;
  • 最早Mac每行结尾是回车CR 即'\r',后mac os x 也投奔了 unix。

许多 Windows 上的编辑器会悄悄把行尾的换行(LF)字符转换成回车(CR)和换行(LF),或在用户按下 Enter 键时,插入回车(CR)和换行(LF)两个字符。

影响:

  • 一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;
  • 而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
  • Linux保存的文件在windows上用记事本看的话会出现黑点。

这些问题都可以通过一定方式进行转换统一,例如,在linux下,命令unix2dos 是把linux文件格式转换成windows文件格式,命令dos2unix 是把windows格式转换成linux文件格式。

三、解决问题:

情况一:

Git 可以在你提交时自动地把回车(CR)和换行(LF)转换成换行(LF),而在检出代码时把换行(LF)转换成回车(CR)和换行(LF)。 你可以用 git config --global core.autocrlf true 来打开此项功能。 如果是在 Windows 系统上,把它设置成 true,这样在检出代码时,换行会被转换成回车和换行:

#提交时转换为LF,检出时转换为CRLF
$ git config --global core.autocrlf true

情况二:

如果使用以换行(LF)作为行结束符的 Linux 或 Mac,你不需要 Git 在检出文件时进行自动的转换。然而当一个以回车(CR)和换行(LF)作为行结束符的文件不小心被引入时,你肯定想让 Git 修正。 所以,你可以把 core.autocrlf 设置成 input 来告诉 Git 在提交时把回车和换行转换成换行,检出时不转换:(这样在 Windows 上的检出文件中会保留回车和换行,而在 Mac 和 Linux 上,以及版本库中会保留换行。)

#提交时转换为LF,检出时不转换
$ git config --global core.autocrlf input

情况三:

如果你是 Windows 程序员,且正在开发仅运行在 Windows 上的项目,可以设置 false 取消此功能,把回车保留在版本库中:

#提交检出均不转换
$ git config --global core.autocrlf false

你也可以在文件提交时进行safecrlf检查

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

通俗解释

  • git 的 Windows 客户端基本都会默认设置 core.autocrlf=true,设置core.autocrlf=true, 只要保持工作区都是纯 CRLF 文件,编辑器用 CRLF 换行,就不会出现警告了;
  • Linux 最好不要设置 core.autocrlf,因为这个配置算是为 Windows 平台定制;
  • Windows 上设置 core.autocrlf=false,仓库里也没有配置 .gitattributes,很容易引入 CRLF 或者混合换行符(Mixed Line Endings,一个文件里既有 LF 又有CRLF)到版本库,这样就可能产生各种奇怪的问题。

————————————————
版权声明:本文为CSDN博主「青崖林夕」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012757419/article/details/105614028

标签:LF,core,git,换行,will,Windows,回车
From: https://www.cnblogs.com/lyh523329053/p/17532158.html

相关文章

  • gitlab+jenkins+pycharm持续集成环境搭建
    接口自动化虚拟机登录:root   sq若gitlab的容器打不开,关闭防火墙gitlab登录:http://192.168.31.128:9001/projects/new#blank_projectrooti3213941 Git:分布式版本控制系统本地仓库:是在开发人员自己电脑上的git仓库远程仓库:是在远程服务器上的git仓库Clone:克隆,就是将......
  • 深入解析Redis的LRU与LFU算法实现
    作者:vivo互联网服务器团队-LuoJianxin重点介绍了Redis的LRU与LFU算法实现,并分析总结了两种算法的实现效果以及存在的问题。一、前言Redis是一款基于内存的高性能NoSQL数据库,数据都缓存在内存里,这使得Redis可以每秒轻松地处理数万的读写请求。相对于磁盘的容量,内存的空......
  • GIT版本控制工具的入门教程
    版本控制工具【GIT】--由于不能提供展示具体格式不太醒目源文档网盘:地址:https://www.aliyundrive.com/s/bit8JRXxdqt提取码:pk121. 下载安装1.:安装git             下载:从 https://git-scm.com/downloads 上下载gitforwindows          ......
  • *gitcode中删除已有的项目
        ......
  • git 统计代码仓命令
    进入git仓目录后统计指定作者和时间的:gitlog--author="xxx_author_name_xxxx"--since=2023-01-01--pretty=tformat:--numstat|awk'{add+=$1;subs+=$2;loc+=$1-$2}END{printf"addedlines:%s,removedlines:%s,totallines:%s\n",a......
  • gitflow为什么要单独检出一个release分支?在develop分支上测试不行吗
    在Gitflow工作流中,将release分支从develop分支中单独检出的主要原因是为了在发布之前进行稳定性和功能测试,以确保发布版本的质量。以下是几个原因说明为什么要单独检出release分支进行测试:隔离开发和测试环境:通过将测试从开发环境(develop分支)隔离出来,可以避免测试中......
  • gitmind思维导图
    一款非常高效的思维导图网站地址网站截图......
  • 【干货向】我想试试教会你如何修改Git提交信息
    Git是目前IT行业使用率最高的版本控制系统,相信大家在日常工作中也经常使用,每次Git提交都会包含提交信息,常用的包括说明、提交人和提交时间等,此篇文章主要向大家介绍下如何修改这些信息,这些命令在正常使用时可能不常用,但还是建议收藏以备不时之需。新提交指定提交信息在使用git......
  • Git安装与windows终端配置Git-bash
    Git概述简介Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git仓库存储和管理这些文件,Git仓库分为两种:本地仓库:开发人员自己电脑上的Git仓库远程仓库:远程服务器上的Git仓库commit:提交,将本地文件和版本信息保存到本地仓库push:推送,将本......
  • Kubernetes使用Helm部署Gitea仓库
    使用Helm部署Gitea仓库配置Helm源helmrepoaddgiteahttps://dl.gitea.io/chartshelmrepoupdate导出Gitea配置文件values.yamlhelmshowvaluesgitea/gitea>values.yaml#helmshowreadmegitea/gitea>README.md修改values.yamlvimvalues.yaml修改持久化配置......