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

这篇具有很好参考价值的文章主要介绍了Git 提示 “warning: LF will be replaced by CRLF“的思考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  在windows平台进行 git add 时, 控制台有时会打印警告 warning: in the working copy of ‘XXX.sh’, LF will be replaced by CRLF the next time Git touches it.
  查看了一些资料, 大概弄清了 core.autocrlf 配置选项的作用:

git config --global core.autocrlf true
适用于Windows系统, 且一般为Windows默认设置, 会在提交时对换行符进行CRLF->LF的转换, 检出时又会进行LF->CRLF的转换.

  我目前在windows平台工作, core.autocrlf 配置为 true, 我明白了是因为要进行转换所以会进行告警, 但我还是有一些疑惑:
1. 在上面的告警语句中, the next time git touches it 指代什么? working copy 又指什么?
2. 另外, 我本地unix格式的文件(我一般是通过tortoisegit 进行commit, push和pull的), 经过多次修改提交后格式却没有变化; 但是当我clone一个库后, 确实该文件会由unix格式变成了windows格式, 为什么?

  我又看到一个资料, 似乎暂时能解释心中的疑惑了:

问题描述:
  windows平台下使用git add, git deploy 文件时经常出现"warning: LF will be replaced by CRLF"的提示:
jedlee@JedsLaptop MINGW64 ~/Desktop/HtmlProject (master)
$ git add .idea
warning: LF will be replaced by CRLF in .idea/workspace.xml.
The file will have its original line endings in your working directory
  
解决此问题的方案:
  (1)如果我们目前是Window平台并出现该警告, 啥也别做就行, 虽然这个警告难看, 但这个警告能保证我们项目团队正常跨系统git操作代码;
  因为git的 Windows客户端基本都会默认设置 core.autocrlf=true(我们可通过git config core.autocrlf命令查询我们的Windows上该属性是否默认true. 如不是true,通过config --global core.autocrlf true命令设置该属性为true), 而"core.autocrlf=true"有以下3个功能来避免我们出错:
  (a)在"把modified的文件git add到暂存区stage"时, Git自动把LF转换成CRLF, 并给出那条警告"LF will be replaced by CRLF"
  (b)在"把modified的文件由暂存区(stage)提交(commit)到版本库/仓库(repository)“时, Git自动把CRLF转换成LF
  (c)在"用 git checkout(检出)切换到指定分支 或 git clone克隆远程版本库"来加载代码时, Git自动把LF转换成CRLF //采出clone时, 从远程得到文件果然全部变成了windows格式
  提到的那句警告: “IF will be replaced by CRLF in xxx”, 这句警告的下面其实还有一句很重要的话: The file will have its original line endings in your working directory. (翻译: “在工作区里, 这个文件会保留它原本的换行符”)
  (2)如果我们是Linux 或 Mac平台, 我们不需要5(1)(c)的功能"在检出或克隆远程版本库时, Git自动把LF转换成CRLF”. 然而当一个CRLF作为行结束符的文件在我们的Linux 或 Mac平台不小心被引入时, 你肯定想让 Git 修正. 所以, 你可以通过config --global core.autocrlf input 命令把 core.autocrlf 设置成 input 来告诉 Git 在提交(commit)时把CRLF转换成LF, 检出(git checkout)时不转换;
  (1)+(2): 这样在 Windows 上的检出(checkout)文件中会保留CRLF, 而在 Mac 和 Linux 上, 以及版本库中会保留LF, 从而保证我们项目团队正常跨系统git操作代码;

自己理解的答案:

  1. 针对第一个疑惑: 当add时, 会把"把modified的文件git add到暂存区stage", 虽然我不清楚stage是什么, 但我想它应该是在本地, 它里面的内容会以CRLF结尾, 故会进行LF->CRLF的转换; 而"把modified的文件由暂存区(stage)提交(commit)到版本库/仓库(repository)"时, Git自动把CRLF转换成LF; 这个仓库的内容push后应该本地和远方是一致的吧?
      warning: in the working copy of ‘XXX.sh’, LF will be replaced by CRLF the next time Git touches it 应该就是在转换之前给出的, the next time git touches it 应该指的是接下来的转换; the working copy of 'XXX.sh’应该是指stage区内的文件;
      或者该警告是说: 当git下次检出时, 该文档的LF会被CRLF取代?
      无论如何, 当 autocrlf 为 true 时, 对于想在本地保存unix格式的文件来说, 应该都不是安全的;

  2. 针对第二个疑惑, 可能因为我的项目都是自己使用的缘故, 我一般是通过 tortoisegit 进行 git pull 操作, 似乎这种操作不会更动原文件吧; 而当我进行 git clone 时, 则会从repository中恢复文档, 故我原来的unix格式文件会变成windows格式, 这也是一个隐患所在;

总结:
  对于我上面第二个引用的描述, 他给出的解决方案其实适合项目中涉及不同平台的合作开发, 故win平台用(1)选项, 而linux平台用(2)选项;
  而对于我一个人开发的项目(多人开发但只要不跨平台应该也可以), 主要还是在win平台编辑, 但还需要备份linux平台使用的文件, 但会在几个电脑之间进行同步;
  那么对于我来说, 最好用的选项应该是: autocrlf false (在提交、检出时不会对CRLF/LF换行符进行转换)
  它的好处是: 少了换行符的转换, 可以加快操作速度; 同时也保证了备份unix格式文件的完整性;

引文链接:
https://blog.csdn.net/Babylonxun/article/details/126598477
https://blog.csdn.net/wq6ylg08/article/details/88761581文章来源地址https://www.toymoban.com/news/detail-802754.html

到了这里,关于Git 提示 “warning: LF will be replaced by CRLF“的思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • warning: in the working copy of ‘App.vue‘, LF will be replaced by CRLF the next time Git touches it

    git add . 一大串的warning warning: in the working copy of \\\'App.vue\\\', LF will be replaced by CRLF the next time Git touches it warning: in the working copy of \\\'pages.json\\\', LF will be replaced by CRLF the next time Git touches it warning: in the working copy of \\\'pages/cart/cart.vue\\\', LF will be replaced by CRLF the next time Git touches it warning: in the

    2024年02月14日
    浏览(44)
  • LF will be replaced by CRLF the next time Git touches it

    问题 在执行 git add . 的命令的时候警告 LF will be replaced by CRLF the next time Git touches it 原因 在windows中的换行符为  CRLF , 而在linux下的换行符为: LF 使用git来生成工程后,文件中的换行符为LF, 当执行git add .时,系统则提示:LF 将被转换成 CRLF 解决 关闭git的CRLF rm -rf .git git co

    2024年02月05日
    浏览(46)
  • 让你搞懂怎么解决LF、CRLF问题LF will be replaced by CRLF the next time Git touched it

    大家好,我是小饼鹅,让我们一起学习吧   如果我们正在应用的windows系统进行开发工作的话,我们很有可能在对代码进行git add 的时候会看到以下warning: LF will be replaced by CRLF the next time Git touched it 很多人可能并不会特别在意,因为它貌似并没有对我们产生什么影响,可是真

    2024年02月09日
    浏览(43)
  • Git: ‘LF will be replaced by CRLF the next time Git touches it‘ 问题解决办法

    warning: in the working copy of \\\'SafariJs/雪花飘飘.js\\\', LF will be replaced by CRLF the next time Git touches it windows平台进行 git add 时,控制台打印警告warning: in the working copy of ‘XXX.py’, LF will be replaced by CRLF the next time Git touches it Dos/Windows平台默认换行符:回车(CR)+换行(LF),即’rn’ Mac/

    2024年02月05日
    浏览(46)
  • Git提交代码时出现: ‘LF will be replaced by CRLF the next time Git touches it‘

    windows平台进行 git add 时,控制台打印警告 1. Dos/Windows平台默认换行符:回车(CR)+换行(LF),即’rn’ 2. Mac/Linux平台默认换行符:换行(LF),即’n’  企业服务器一般都是Linux系统进行管理,所以会有替换换行符的需求 设置方法一: 适用于Windows系统,且一般为Windows默

    2024年04月25日
    浏览(66)
  • git config --global core.autocrlf input (在检出代码时不自动转换行尾,在提交代码时自动将行尾转换为LF)CRLF will be replaced by LF

    我们一般希望远程仓库中的代码为LF,就用: git config --global core.autocrlf input 就ok了。 这是一个Git的配置命令,它的作用是告诉Git在检出代码时不要自动将行尾转换为CRLF(Windows风格的换行符),而是保留原来的LF(Unix风格的换行符)。 core.autocrlf input 的意思是告诉Git在检出代

    2024年02月09日
    浏览(47)
  • git 提交换行符问题:LF would be replaced by CRLF

    提交git 记录时,遇到问题 原因 : 是因为git换行符的导致Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF 解决方案:禁止转换文件格式,其次允许提交换行符的文件 打开命令行,执行以上两个命令: 执行完后,切换回到git 工具,进行提交,这里是sourcetree, 从下图

    2024年02月06日
    浏览(38)
  • VUE中eslint报错: Expected linebreaks to be ‘LF‘ but found ‘CRLF

    出现这个的原因 :windows 环境下, git 在我们 pull 代码的时候,会自动识别当前的系统环境。将原本的(linux/unix)换行改成对应系统的,在我们提交代码的时候又会转成远程系统环境的(Linux/unix),然后又装了 eslint,默认就是使用 LF,所以就会报这个错误 各种环境下换行符格

    2023年04月08日
    浏览(48)
  • vscode git拉下来后LF CRLF问题

    点击这里可以更改红色报错, windows下默认是CRLF, 类unix下LF vscode 1. 在设置里Eol 选n 2. 在根路径.editorconfig 里end_of_line = lf 以上都不生效 可以有两种解决方案: 一. 下载插件EditorConfig for VS Code 保存自动格式化为lf;//但是会有commit更改(不推荐) 二. 在你使用git拉取代码的时候

    2024年02月01日
    浏览(43)
  • Git在Windows下 自动转换换行符 LF CRLF 的解决方案

    很多时候我们做开发是在Windows下,然后需要部署到Linux环境,但他们的换行符是不一样的,而Git默认的设置会开启转换,也就是文件在Git存储的时候都是LF ,然后我们在Win下拉代码,就会自动转换成CRLF,如果我们需要在Win下做调试,就很麻烦,而如果我们关闭自动转换,在代

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包