57

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

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

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

现在,设置safecrlf为 false 会使警告消失,但手册safecrlf内容如下:

如果为真,当行尾转换处于活动状态时,让 git 检查转换 CRLF 是否可逆。Git 将验证命令是否直接或间接修改了工作树中的文件。例如,提交一个文件然后签出同一个文件应该会在工作树中产生原始文件。如果 core.autocrlf 的当前设置不是这种情况,git 将拒绝该文件。

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

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

4

4 回答 4

16

据我所知,设置core.safecrlffalse是​​关闭该警告的唯一方法。

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

于 2013-06-20T15:20:20.047 回答
11

在你的.gitattributes你可以:

# normalize text files to use lf
text eol=lf

# except these which we want crlf
*.txt eol=crlf
于 2013-06-01T15:03:03.387 回答
7

对您的问题的简短回答是否定的。

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

  • false - 在没有警告的情况下继续
  • 警告 - 继续警告
  • 真的 - 不要继续

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

于 2016-05-27T15:05:27.637 回答
1

利用

$ git config core.autocrlf false
于 2020-05-01T22:38:26.867 回答