尝试提交Git文件,但获取:: fatal:LF将被<repo>中的某个文件中的CRLF替换

Pur*_*ome 59 windows git visual-studio

当我尝试提交一些更改的文件时,我收到TortoiseGit的以下错误消息

fatal: LF would be replaced by CRLF in <some file in the repo>

现在,在我得到通常的LF vs CRLF答案之前,我知道并理解辩论的内容.其次,我还将我的全局设置设置为:

core.autocrlf true

第三,我有一个.gitattributes档案.

所以我 - 想要确保或文件被迫拥有CRLF.

我不明白的是,它正在说FATAL阻止我继续下去.一个警告?当然!我知道我在做什么吗?我做!

我只想让它静静地转换为STFU.

或者,如果它被迫阻止我,有没有办法我可以更新回购中的所有文件CRLF,所以这个警告可能会丢失?

这些repo是私有的,所以它们永远不会在Windows + Visual Studio之外开发.

任何人都可以请没有贬低这个线程进入一个帮助autocrlf TRUEVS autocrlf FALSE宗教战争.

Von*_*onC 67

core.safecrlf如果您只需要警告而不是致命错误,则可能需要设置为"警告".

" git config"管理页面:

core.safecrlf

如果为true,则进行git检查,如果在行结束转换处于活动状态时转换CRLF是可逆的.Git将验证命令是直接还是间接修改工作树中的文件.
例如,提交文件后检出同一文件应该会在工作树中生成原始文件.如果对于core.autocrlf的当前设置不是这种情况,git将拒绝该文件.
该变量可以设置为"警告",在这种情况下,git只会警告不可逆转换,但继续操作.

CRLF转换有可能破坏数据.
启用时,git会在提交期间将CRLF转换为LF,在结账时将LF转换为CRLF.
无法通过git重新创建在提交之前包含LF和CRLF混合的文件.
对于文本文件,这是正确的做法:它校正行结尾,这样我们在存储库中只有LF行结尾.
但对于意外归类为文本的二进制文件,转换可能会破坏数据.

如果您提前识别出此类损坏,则可以通过明确设置转换类型轻松解决此问题.gitattributes.
提交后,您仍然在工作树中保留原始文件,此文件尚未损坏.你可以明确告诉git这个文件是二进制文件,git会适当地处理文件.

不幸的是,无法区分清除具有混合行结尾的文本文件和破坏二进制文件的不良影响的期望效果.
在这两种情况下,CRLF都以不可逆转的方式被移除.对于文本文件,这是正确的做法,因为CRLF是行结尾,而对于二进制文件,转换CRLF会破坏数据.

我更喜欢识别我想要.gitattributes仅使用文件强制eol的文件或文件类型(使用core.eol您拥有的设置),并保留autocrlf为false.

如果文本fiels与混合eol,这篇博客文章建议,例如,:

如果您的计算机中安装了Notepad ++,只需按照以下步骤操作即可.

  1. 打开具有致命问题的文件.
  2. 单击Edit -> EOL Conversion然后选择Windows格式或任何您遇到问题的提交.

警告,如果你有Git 2.17或2.18:在Git 2.17循环中8462ff4(" convert_to_git():safe_crlf/checksafe变成int conv_flags",2018-01-13,Git 2.17.0)中引入的回归导致autocrlf重写产生警告消息,尽管设置safecrlf=false.

Anthony Sottile()提交6cb0912(2018年6月4日).(由Junio C Hamano合并- -提交8063ff9,2018年6月28日)asottile
gitster


Sno*_*ash 25

git config --global core.safecrlf false
Run Code Online (Sandbox Code Playgroud)


san*_*sht 10

这将禁用crlf致命警告.

git config core.autocrlf false
git config core.safecrlf false
Run Code Online (Sandbox Code Playgroud)


小智 6

由于您的存储库是私有的,您可以git-config这样设置:

\n\n

git config --global core.autocrlf false\n

\n\n

这将解决您的问题。如果您还有任何其他问题,\n您可以阅读\xe3\x80\x8aPro git\xe3\x80\x8b

\n\n
\n

如果您\xe2\x80\x99 是一名 Windows 程序员,正在执行仅限 Windows 的项目,那么您可以关闭此功能,通过将配置值设置为false来在存储库中记录回车符:\n $ git config --global core.autocrlf false

\n
\n\n

但在协作时,你最好做到以下几点:

\n\n
    \n
  1. add .gitattributes, Github 帮助 - 处理行结尾会很有帮助。
  2. \n
  3. git config --global core.safecrlf true
  4. \n
    • \n
    • 视窗:git config --global core.autocrlf true
    • \n
    • Mac 或 Linux:git config --global core.autocrlf input
    • \n
  5. \n
\n\n

您可能需要阅读Git 文档-git config以获取更多信息。

\n