【发布时间】:2011-02-19 00:08:11
【问题描述】:
我有一个可以从 Windows 和 OS X 访问的 Git 存储库,并且我知道它已经包含一些带有 CRLF 行结尾的文件。据我所知,有两种方法可以解决这个问题:
在任何地方将
core.autocrlf设置为false,-
按照说明 here(在 GitHub 的帮助页面上回显)将存储库转换为仅包含 LF 行尾,然后在 Windows 上将
core.autocrlf设置为true,在 OS X 上设置input。问题这样做是如果我在存储库中有任何二进制文件:- 在 gitattributes 中未正确标记为二进制,并且
- 恰好同时包含 CRLF 和 LF,
它们将被损坏。我的存储库可能包含此类文件。
那么我为什么不应该关闭 Git 的行尾转换呢?网络上有很多关于关闭 core.autocrlf 会导致问题的模糊警告,但很少有具体的警告;到目前为止,我发现的唯一问题是 kdiff3 无法处理 CRLF 结尾(对我来说不是问题),并且某些文本编辑器存在行尾问题(对我来说也不是问题)。
存储库是我公司内部的,因此我无需担心与具有不同 autocrlf 设置或行尾要求的人共享它。
我不知道只保留行尾是否还有其他问题?
【问题讨论】:
-
stackoverflow.com/questions/2333424/… 有帮助吗?我有将
autocrlf设为假的具体原因的链接。 -
@VonC 谢谢,但我已经能够规定公司中的所有用户都将
autocrlf设置为 false,并且目前认为这是最好的选择。但我想知道我是否有任何理由不应该这样做,因为我发现有很多人(例如 GitHub)说我 autocrlf 应该设置,但没有具体的原因。 -
@VonC 即我不是在寻找将
autocrlf设置为 false 的理由。我正在寻找将其设置为 true 的理由。 -
为什么不使用
autocrlf = input:这似乎是两个极端之间的完美解决方案:您可以让您的 repo 免受 CRLF 垃圾的影响,并且本地 Windows 开发人员可以使用他们想要的任何东西,而无需本地文件任何魔法都会自动对他们进行。 (他们可能出于各种原因想要在本地使用 LF,所以在我看来,true很糟糕。)我看不出使用autocrlf = input有任何缺点。 -
@iconclast,我遇到的一个原因是,如果您构建的发行版同时包含 Windows 批处理文件和 Unix shell 脚本。您希望在每种情况下都使用正确的行结尾,如果即使您明确地将它们设置为一种或另一种方式,Git 仍然在四处乱窜,这将更难做到。
标签: git line-endings