处理Cygwin Git和Git for Windows中的EOL字符访问同一个存储库

时间:2014-10-16 14:50:51

标签: git cygwin msysgit line-endings core.autocrlf

我的autocrlf等于真。在我的cygwin-shell中git status为我提供了所有更改的正确列表。

在Git Bash中git status说我修改了项目中的所有文件。我也在Git GUI和IntelliJ中的Changes-tab中看到了这一点。

这怎么可能,更重要的是,我该如何解决?

1 个答案:

答案 0 :(得分:5)

Cygwin Git“看世界”就好像它在POSIX平台上运行一样 - 感谢Cygwin提供的仿真。与此相反,Git for Windows是一个原生的 Windows程序,它不使用任何仿真,并试图尽可能接近Windows标准(尽管是愚蠢的)。这导致的是,对于Cygwin Git,LF是标准的EOL字符,而对于Git for Windows,本机EOL序列是CRLF。所以这两种工具都以不同的方式看待世界,这解释了你所观察到的。请阅读this recent thread了解详情(尤其是this message)。

在任何一种情况下,consider setting core.autocrlf to false anyway都可以避免头痛这种“神奇”。我单独使用GfW,最后将该设置切换为false(默认为true)。

您可能还会发现评论极为好的.gitattributes file from the Mono project对您来说很有意思。