协慌网

登录 贡献 社区

LF 将被 git 中的 CRLF 取代 - 这是什么,它是否重要?

可能重复:
git 用 CRLF 代替 LF

当我创建一个新的 rails 应用程序时,我在 git 中看到有关 LF 替换的警告。我做 git init git add。

然后热潮!我看到几乎所有文件都弹出。我通常只是继续构建我的应用程序,它在文件的许多更改后消失了。

例:

该文件将在您的工作目录中具有其原始行结尾。警告:LF 将被 Gemfile 中的 CRLF 替换。

该文件将在您的工作目录中具有其原始行结尾。警告:LF 将被 Gemfile.lock 中的 CRLF 替换。

该文件将在您的工作目录中具有其原始行结尾。警告:LF 将由 README 中的 CRLF 替换。

LF 和 CRLF 有什么区别?

从长远来看,我是否应该关注这一点,或者只是忽略它并像往常一样继续前进?

答案

在 Unix 系统中,行的结尾用换行符(LF)表示。在窗口中,一行用回车(CR)和换行(LF)表示(CRLF)。当你从 unix 系统上传的 git 中获取代码时,他们只会有一个 LF。

如果要关闭此警告,请在 git 命令行中键入此警告

git config core.autocrlf true

如果你想做出明智的决定 git 应该如何处理这个问题, 请阅读文档

这是一个片段

格式化和空白

格式化和空白问题是许多开发人员在协作时遇到的更令人沮丧和微妙的问题,尤其是跨平台问题。修补程序或其他协作工作很容易引入细微的空白更改,因为编辑器会默默地引入它们,如果您的文件曾经触及 Windows 系统,它们的行结尾可能会被替换。 Git 有一些配置选项来帮助解决这些问题。

core.autocrlf

如果你在 Windows 上进行编程并与那些没有(或反之亦然)的人一起工作,那么你可能会在某些时候遇到行结束问题。这是因为 Windows 对其文件中的换行使用回车字符和换行符,而 Mac 和 Linux 系统仅使用换行符。这是跨平台工作的一个微妙但令人讨厌的事实; Windows 上的许多编辑器默默地用 CRLF 替换现有的 LF 样式行结尾,或者在用户点击回车键时插入两个行结束字符。

当您将文件添加到索引时,Git 可以通过将 CRLF 行结尾自动转换为 LF 来处理此问题,反之亦然,当它将代码签出到您的文件系统时。您可以使用 core.autocrlf 设置打开此功能。如果您使用的是 Windows 计算机,请将其设置为 true - 这会在您签出代码时将 LF 结尾转换为 CRLF:

$ git config --global core.autocrlf true

如果您使用的是使用 LF 行结尾的 Linux 或 Mac 系统,那么您不希望 Git 在您签出文件时自动转换它们; 但是,如果意外引入了 CRLF 结尾的文件,那么您可能希望 Git 修复它。您可以告诉 Git 在提交时将 CRLF 转换为 LF,但不能通过将 core.autocrlf 设置为输入来反转:

$ git config --global core.autocrlf input

此设置应该在 Windows 签出中留下 CRLF 结尾,但在 Mac 和 Linux 系统以及存储库中的 LF 结尾。

如果您是 Windows 程序员,只执行 Windows 项目,则可以关闭此功能,通过将 config 值设置为 false 来记录存储库中的回车:

$ git config --global core.autocrlf false

如果需要,可以使用 git core config 取消激活此功能

git config core.autocrlf false

但最好只使用它来消除警告

git config core.autocrlf true