草庐IT

warning: in the working copy of ‘...‘, LF will be replaced by CRLF the next time Git touche

一碗姜汤 2023-04-18 原文

执行git add .的时候出现的警告

解释:CR/LF是不同操作系统上使用的换行符:

  • CR(CarriageReturn回车'\r'):回到一行的开头,ASCII代码是13
  • LF(LineFeed换行'\n'):另起一行,ASCII代码是10

应用情况:

  • DosWindows平台: 使用回车(CR)和换行(LF)两个字符来结束一行,回车+换行(CR+LF),即“\r\n”;所以我们平时编写文件的回车符应该确切来说叫做回车换行符。
  • Mac Linux平台:只使用换行(LF)一个字符来结束一行,即“\n”;

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

影响:

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

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

解决问题:

情况一:windows用户

Git 可以在你提交时自动地把回车(CR)和换行(LF)转换成换行(LF),而在检出代码时把换行(LF)转换成回车(CR)和换行(LF)。因为git 的 Windows 客户端基本都会默认设置 core.autocrlf=true

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

情况二:linux/mac用户

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

#提交时转换为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
通俗解释

Windows 上设置 core.autocrlf=false,仓库里也没有配置 .gitattributes,很容易引入 CRLF 或者混合换行符(Mixed Line Endings,一个文件里既有 LF 又有CRLF)到版本库,这样就可能产生各种奇怪的问题。

有关warning: in the working copy of ‘...‘, LF will be replaced by CRLF the next time Git touche的更多相关文章

  1. ruby - Textmate 错误重复行 "ruby: warning: -K is specified; it is for 1.8 compatibility and may cause odd behavior" - 2

    在Textmate中使用ctrl+shift+d快捷方式重复行时,出现以下错误:“ruby:警告:指定了-K;这是为了1.8兼容性,可能会导致奇怪的行为” 最佳答案 此问题不仅限于重复行,还可能出现在其他使用ruby​​的地方。我通过将Preferences...>Advanced>ShellVariables中的PATH更改为/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin来解决它:/usr/bin:/bin:/usr/sbin:/sbin此更改后,Tex

  2. ruby-on-rails - Railscasts 第 362 集 - 导出到 Excel : How to avoid the warning message given by Excel 2010 when opening the file? - 2

    当使用RyanBates的Railscasts第362集关于导出到Excel(https://github.com/railscasts/362-exporting-csv-and-excel)的示例应用程序时,我注意到Excel2010(在Windows上)在打开.xls文件时给我一条警告消息我使用“下载为Excel”链接下载的文件。警告内容如下:“您尝试打开的文件...的格式与文件扩展名指定的格式不同。打开文件前请确认文件未损坏且来源可靠。是否要打开现在存档吗?”当我单击"is"时,我可以很好地打开文件。在使用Excel2011(在Mac上)时,我什至没有收到警告消息。但我希望能够

  3. ruby-on-rails - 我该如何去追踪与 Bundler 相关的 DEPRECATION WARNING - 2

    我是Rails的新手。当我启动我的应用程序时,我不断看到这些弃用警告:DEPRECATIONWARNING:refisdeprecatedandwillberemovedfromRails3.2.(calledfromatD:/dev/AquaticKodiak/config/application.rb:12)DEPRECATIONWARNING:newisdeprecatedandwillberemovedfromRails3.2.(calledfromatD:/dev/AquaticKodiak/config/application.rb:12)好的,第12行是什么?这个:Bun

  4. ruby - pg gem : 'Warning: no type cast defined for type "numeric"' - 2

    我在从pggem中获取输入结果时遇到问题。require'pg'require_relative'spec/fixtures/database'client=PG.connect(DB[:pg])client.type_map_for_queries=PG::BasicTypeMapForQueries.new(client)client.type_map_for_results=PG::BasicTypeMapForResults.new(client)client.exec(%|select*fromtestme;|)do|query|query.each{|r|putsr.ins

  5. ruby-on-rails - rails : Why do I get "warning: already initialized constant JSON::VERSION" when running rake cucumber? - 2

    我刚刚设置了一个LinuxMintbox,用于使用rvm进行Rails开发。我继续生成了一个Rails5应用程序,设置了mysql连接,添加了cucumber-railsgem然后尝试运行:rakecucumber出于某种原因,我遇到了:/usr/bin/ruby2.3-Sbundleexeccucumber--profiledefault/usr/lib/ruby/vendor_ruby/json/version.rb:3:warning:alreadyinitializedconstantJSON::VERSION/var/lib/gems/2.3.0/gems/json-1.8.

  6. Ruby 动态类。如何修复 "warning: class variable access from toplevel" - 2

    我正在尝试编写一个程序,根据从文件中读取的配置动态定义ruby​​类。我知道我可以使用Class.new来做到这一点。这是一个示例程序:x=[1,2,3]Test=Class.newdo@@mylist=xdeffooputs@@mylistendendTest.new.foo当我运行它时,我得到以下输出(使用ruby​​1.9.3p0运行):c:/utils/test.rb:4:warning:classvariableaccessfromtoplevelc:/utils/test.rb:7:warning:classvariableaccessfromtoplevel123Does

  7. ruby-on-rails - 使用 Rails 中的命名空间类防止 "warning: toplevel constant B referenced by A::B" - 2

    在自定义目录(例如:app/presenters/)中存储文件时,如何确保加载命名空间类?例如,如果您有:app/models/mega_menu.rbapp/presenters/catalog_presenter.rbapp/presenters/mega_menu/catalog_presenter.rbRails无法加载MegaMenu::CatalogPresenter:CatalogPresenter.new=>#MegaMenu::CatalogPresenter.new(irb):3:warning:toplevelconstantCatalogPresenterref

  8. ruby-on-rails - 带有 Ruby 2.5.1 控制台的 Rails 5.2.0 - `warning:` `already` 初始化常量 FileUtils::VERSION - 2

    我目前在使用我的新Rails应用程序时遇到问题,更具体地说:rails5.2.0Ruby2.5.1p57(2018-03-29修订版63029)[x86_64-darwin17]rvm1.29.4(最新),作者:MichalPapis、PiotrKuczynski、WayneE.Seguin[https://rvm.io]当我运行railsc时,它会生成一个指向fileutilsgem的警告链接,如下所示:`/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:90:``warning:``already`initialize

  9. ruby-on-rails - 启动 Rails 服务器时出错 : warning: Insecure world writable dir/usr in PATH, 模式 040777 - 2

    这个问题在这里已经有了答案:Gettingthewarning"Insecureworldwritabledir/home/chance"inPATH,mode040777forrailsandgem(6个答案)关闭8年前。我正在学习Treehouse上的Ruby教程,但在启动Rails服务器时,我不断收到以下错误:/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197:warning:Insecureworldwritabledir/usrinPATH,mode0

  10. ruby - 烦人的 "warning: already initialized constant"消息的解决方案 - 2

    今天我偶然发现了一个与Ruby常量有关的棘手问题。在我们的团队中,有人创建了一个模块,该模块包含在多个模型中。在我们的(规范)测试中,此结果输出到警告消息中,例如:/home/ayrton/project/lib/life_cycle.rb:5:warning:alreadyinitializedconstantRESET解决这个问题的一种方法是,像这样声明常量:moduleLifeCycleunless(const_defined?(:RESET))RESET='reset'end#...end我还阅读了AvdiGrimm撰写的博客文章,其中提供了替代方案solution,我想知道您

随机推荐