我的autocrlf
等于真。在我的cygwin-shell中git status
为我提供了所有更改的正确列表。
在Git Bash中git status
说我修改了项目中的所有文件。我也在Git GUI和IntelliJ中的Changes-tab中看到了这一点。
这怎么可能,更重要的是,我该如何解决?
答案 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对您来说很有意思。