如果 Linter 在每一行都抛出错误怎么办?

How to work if Linter throws error at every line?

正在尝试处理一个项目,但我无法提交,因为某些 Linter 正在使用中。它抛出如下错误:

预期的换行符是 'LF' 但发现是 'CRLF'

我尝试按照 How do I force git to use LF instead of CR+LF under windows?

中的说明进行操作
git config --global core.eol lf

甚至

git rm --cached -rf .
git diff --cached --name-only -z | xargs -n 50 -0 git add -f

我被 Linter 阻止了任何进展:

我想以某种方式遵守 LF 和 CRLF 的规则,但我的尝试失败了。我在过去的 30 分钟内尝试了这个,在搜索引擎上搜索并试图找到它。我该如何解决这个问题?

我建议 不要 使用 core.autocrlf。相反,创建一个 .gitattributes 文件。在该文件中,使用 eol=lf 作为任何应存储在 存储库 中且仅以 LF 结尾的文件的设置;将 eol=crlf 用作任何应使用 CRLF 设置存储在 存储库 中的文件的设置。另请参阅链接问题的 VonC's accepted answer

与此同时,您的 工作树 中的文件将具有您的主机 OS 想要的任何设置。要理解这意味着什么,请记住在 Git、 提交的 文件中——实际存储在 Git 中的文件——被读取- 仅、压缩、删除重复且通常完全无法使用。 None 您计算机上的其余软件可以读取或使用它们。因此,必须将它们 从 Git 中复制出来,以将它们变成普通(可用)文件。

这意味着您看到和使用的文件 根本不在 Git 中 。它们只是 之前从 Git 中提取出来的,以填充您的工作树。这些普通的、可用的文件可以有你的系统想要的任何行结束符。当 Git 为新提交准备文件时,Git 可以去除原始行结尾并放入仅 LF 行结尾。

任何试图确定您正在提交的内容是否可以提交的预提交挂钩,最好查看,而不是查看 中的文件您的工作树,但在 Git 将查看的文件中,以放入下一次提交。这些文件将具有您告诉 Git 放入其中的任何行结尾,由 .gitattributes 文件提供,您可以在其中单独控制每个文件,而不是使用 [=10= 的 One Big Hammer 方法].

最后,两者都应该起作用。您确实需要 Git 2.16 或更高版本才能获得 git add --renormalize .(这是您真正想要的;其他实现方法充其量是丑陋的)。只要您在主工作树中,使用 rm .git/index && git reset 的方法 也有效;这是一种略显丑陋的方法。