Git 行尾:Mac 到 Windows 虚拟机

Git Line Endings: Mac to Windows VM

我正在 Mac 上开发 运行 本地网站 Windows 虚拟机 (VMware Fusion)。这些文件位于共享目录中,因此 OS 都使用相同的文件。

当我在 Mac 和 运行 上编辑文件时,在 Windows 虚拟机中,我收到错误消息 "Unexpected end of file" 和 "Unexpected character in input '"。

在我的 .gitattributes 文件中,我有 * text eol=crlf,当我提交时,modified/committed 文件的错误不再出现。

首先,有人可以告诉我我的诊断是否正确:在提交文件之前,Mac 行结尾不会转换为 Windows,这会导致 "syntax-style" 运行 在 Windows VM 上安装文件时出现错误?

其次,有没有一种方法可以配置我的 Git 存储库 and/or 我的 VM,以便 OS 都获得他们首选的行结尾?

1) 是的,单独的 text eol 设置只在结账时有效。当你 add/commit 一个具有不同行尾的文件时,你也应该得到这种警告:

warning: LF will be replaced by CRLF in <file you want to commit>.
The file will have its original line endings in your working directory.

2) 如果您想在与 Git 存储库交互之前拥有正确的行结尾,.gitattributes 是不够的。您可以检查您的文本编辑器是否能够配置行尾。大多数文本编辑器都能做到这一点(但是,MAC 的 TextEdit 不是 AFAIK)。