4

这里有很多关于在 Git 中处理行尾的问题。但是,我没有看到的一个问题是,使用EditorConfig是否对 Git 如何处理行尾有任何影响。

我问是因为我从事的几乎所有项目都有一个.editorconfig设置end_of_linelf. 这对我来说很好,但在 Windows 中设置 Git 的行尾处理的标准建议是设置autocrlftrue(即在签出时转换为 CRLF)。

在这种情况下,Editorconfig 和 Git 似乎在朝着相反的方向发展(Git 会在结帐时将行尾转换为 CRLF,但随后 Editorconfig 可能会在保存文件时将它们转换回 LF)。所以我想知道使用 Editorconfig 是否会使 Windows 上的行尾最佳实践有所不同?

笔记:

我的倾向是遵循 Editorconfig 并向每个项目添加一个.gitattributes包含* -text(即告诉 Git 不要触摸行尾,无论autocrlf设置如何)的文件,每个项目都有一个.editorconfig为项目指定行尾的文件(我知道每个人在这些项目上工作使用 Editorconfig 和/或正在使用使用lf结尾的操作系统,这似乎避免了 Git 经常在 Windows 中喷出的恼人的行尾转换警告)。问题是,尽管有很多关于该主题的阅读,Git 中的行尾仍然让我感到困惑,所以我不确定上述内容不会引入新问题(之前的实验.gitattributes最终破坏了图像文件)。那么:这作为一种方法有意义吗?还是 Editorconfig 与行尾处理最佳实践无关?

4

2 回答 2

2

设置autocrlffalse

虽然过去源代码控制工具处理行尾很有用,但它确实是一个编辑器问题,并且通过 EditorConfig 解决了。

于 2018-04-14T17:58:37.290 回答
1

看到解决的是使用 EditorConfig 是否对 Git 如何处理行尾有任何影响。

它不应该对 git 产生任何影响,因为 git 在您暂存内容和提交内容时会检查配置值。

Git 将以定义的方式签出和提交内容。
此工具可以影响您的代码的唯一方法是根据您提供的配置使用定义的 CRLF 更新工作目录内容。

问题是,尽管有很多关于这个主题的阅读,Git 中的行尾仍然让我感到困惑,所以我不确定上述内容不会引入新问题

你不是唯一一个很难理解 git CRLF 是如何工作的人。在您的情况下,我认为没有任何理由担心您的问题:

所以我想知道使用 Editorconfig 是否会使 Windows 上的行尾最佳实践有所不同?

我会在 git 中定义我的所有配置,.gitconfig/.gitattributes并忽略 CRLF 在 git 之外处理。

于 2016-04-19T14:20:59.883 回答