如何解决如果 Linter 在每一行都抛出错误,如何工作?
尝试处理一个项目,但我无法提交,因为某些 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。
与此同时,工作树中的文件将具有主机操作系统想要的任何设置。要理解这意味着什么,请记住在 Git 中,提交文件——实际存储在Git中的文件——是只读的、压缩的、重复数据删除的,并且通常完全无法使用。您计算机上的其他软件都无法读取或使用它们。因此,它们必须从 Git 中复制以将它们变成普通的(和可用的)文件。
这意味着您看到和使用的文件根本不在 Git 中。它们只是之前从 Git 中提取的,以填充您的工作树。那些普通的、可用的文件可以有系统想要的任何行尾。当 Git 为新提交准备文件时,Git 可以去除原始行尾并放入仅 LF 行尾。
任何试图确定您提交的内容是否可以提交的预提交钩子,最好是查看,而不是查看您在您的工作树中的文件,但是在 Git 将查看的文件中,以放入下一次提交。这些文件将具有您告诉 Git 放入的任何行尾,这由 .gitattributes
文件提供,您可以在其中单独控制每个文件,而不是使用 core.autocrlf
的 One Big Hammer 方法。>
最后,两者都应该有效。您确实需要 Git 2.16 或更高版本才能获得 git add --renormalize .
(这是您真正想要的;其他方法充其量是丑陋的)。只要您在主工作树中,使用 rm .git/index && git reset
的方法 knittl mentioned in a comment 也确实有效;这种方法有点丑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。