首页 > 解决方案 > Windows 和 Linux 中的行尾自动检测

问题描述

我已经看到这个问题被问了很多,并且我已经阅读了关于它的材料。

我仍然很困惑,我遇到了一些相互矛盾的意见。

在我的环境中,开发发生在 Windows 和 Linux 机器上。有问题的文件没有扩展名,但包含文本,并且需要具有 LF 结尾以符合 Linux 方面的要求。

我想创建一个 .gitattributes 文件,以便集中进行一次更改。

我将所有文件指定为二进制文件(例如图像和音频),以避免每个文件都被转换,以及为其他文件创建规则。

我已经看到有关使用的建议:

* text=auto

根据此处的另一个堆栈溢出帖子:

这就是 * text=auto 的作用:当有人提交一个文件时,Git 会猜测该文件是否是文本文件,如果是,它将提交一个替换所有 CR + LF 字节的文件版本与 LF 字节。它不会直接影响文件在工作树中的外观,还有其他设置可以在签出文件时将 LF 字节转换为 CR + LF 字节。

这对我的目的来说似乎是错误的。

当从 Linux 机器克隆存储库并签出分支时,听起来它会将其转换为工作目录中的 CRLF。

工作目录中的行尾是否取决于操作系统?它会自动检测吗?

我需要它是 Linux 工作目录中的 LF。在 Windows 上我不太在意。但它需要在 Linux 和远程存储库中都是 LF

* text=auto完成我正在寻找的东西吗?

* text=auto eol=lf更好地满足我的目的吗?

提前致谢

标签: git

解决方案


从我读到的git help attributes你应该使用你说的最后一句话:

* text=auto eol=lf

从文档中:

Set to string value "lf"
   This setting forces Git to normalize line endings to LF on checkin and prevents conversion to CRLF when the file is checked out.

推荐阅读