git:我怎么摆脱“警告:CRLF将被replace为LF”而不禁用safecrlf?

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

警告:在whatever.txt中,CRLF将被LFreplace

但我知道。 我不需要这个警告。 replace文本文件中的行尾是我想要的。

现在,将safecrlf设置为false会使警告消失,但safecrlf的手册显示为:

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

从这个safecrlf来看, safecrlf似乎是一个好主意。 然而,我不明白为什么设置safecrlf为真给我警告我的文本文件; 在我看来,这些是不同的问题 – 文本文件的警告和检查是否可逆。 的确,git不会拒绝我的文件。

我可以摆脱文本文件的警告,仍然safecrlf设置? 还是我误解了一些东西?

据我所知,将core.safecrlf设置为false是closures该警告的唯一方法。

如果您的属性设置正确, safecrlf通常不是必需的。 safecrlf是防止在存储库中应该有混合(或非LF)行尾的文件中规范化。 它确实只与core.autocrlf (确保它的自动猜测不能破坏任何东西)结合使用,如果你通过.gitattributes设置你自己的属性,应该可以把所有closures。

在你的.gitattributes你可以:

 # normalize text files to use lf text eol=lf # except these which we want crlf *.txt eol=crlf 

你的问题的简短答案是NO。

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

  • 错误 – 没有警告地进行
  • 警告 – 继续警告
  • 真实 – 不要继续

所以,你必须select最适合你的选项。