git:如何在不禁用safecrlf的情况下摆脱"警告:CRLF将被LF取代"?

osk*_*rkv 56 git

我是git的新手,我已经阅读了许多关于行结尾以及git如何对待它们的内容.顺便说一句,我在Windows上.我已经制作了一个.gitattributes文件并将例如*.txt设置为文本.当我提交.txt文件时,我收到警告:

警告:CRLF将在whatever.txt中被LF替换

但我知道.我不需要那个警告.替换文本文件中的行结尾是我想要的.

现在,设置safecrlf为false会使警告消失,但safecrlf阅读手册:

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

从那以后,safecrlf似乎是一个好主意.但是,我不明白为什么设置safecrlf为true会给我关于我的文本文件的警告; 在我看来,这些是不同的问题 - 文本文件的警告和检查是否可逆.实际上,git不会拒绝我的文件.

我可以摆脱文本文件的警告,仍然 safecrlf设置?还是我误解了什么?

Jan*_*ger 16

据我所知,设置core.safecrlf为关闭该警告false唯一方法.

safecrlf如果您的属性设置正确,通常不需要.关键safecrlf是要防止在存储库中应该具有混合(或非LF)行结尾的文件中的规范化.它真的只有与它结合使用core.autocrlf才能(确保它的自动猜测不会破坏任何东西),如果你通过.gitattributes它设置自己的属性,那么应该可以将所有这些都关掉.


小智 11

在您的.gitattributes,您可以:

# normalize text files to use lf
text eol=lf

# except these which we want crlf
*.txt eol=crlf
Run Code Online (Sandbox Code Playgroud)

  • 这不回答我的问题. (2认同)

o.v*_*o.v 6

对你的问题的简短回答是否定的.

因为,基本上,core.safecrlf设置控制"警告级别":

  • false - 没有警告地继续
  • 警告 - 继续警告
  • 是的 - 不要继续

因此,您必须选择最适合您的选项.