44

我正在我的 Win Vista 开发 VPC 上安装 msysgit 1.6.4 beta。安装屏幕询问我是否要使用 Unix 行终止或 DOS 行终止。通常,我会选择 DOS,但设置文本表明 DOS 终止可能意味着文件不能与所有 Git 命令行工具一起使用。Unix 行终止状态“......大多数 [Windows] 应用程序可以处理这个......”。

有谁知道我应该选择哪个选项通过 shell 使用 Git 来完成我的 VS 2008 工作?

4

2 回答 2

129

msysgit 安装过程中的设置实际上是在这里修复core.autocrlf config的值。

core.autocrlf

如果为 true,则在从文件系统读取时使 gitCRLF在文本文件的行尾转换为LF,并在写入文件系统时反向转换。

该变量可以设置为 ' ',在这种情况下,转换仅在从文件系统读取时发生,但文件在行尾 input写出。LF

目前,考虑“文本”的路径(即服从autocrlf机制)纯粹基于内容来决定。

我坚持不要尝试自动转换任何东西,副作用太重要了(就潜在的合并冲突而言,尤其是在具有不同环境的分布式开发方面)

如果您的工具可以处理 Unix 样式的行终止,则应将它们设置为生成 Unix 行,然后可以由 Windows(VS2008、Notepad++、...)和 Unix 读取,并且可以由任何 'sh' Git 处理-脚本。

但是core.autocrlf设置为 false 时,转换文本行终止的决定将是自愿的显式决定,而不是背景不可见的副作用。


在“不同操作系统之间的行尾转换如何工作git core.autocrlf”中查看更多信息

                 | 产生的转换时 | 结果转换时
                 | 提交各种文件 | 从回购中签出-
                 | EOLs INTO 回购和 | 里面有混合文件和
                 | core.autocrlf 值:| core.autocrlf 值:           
-------------------------------------------------- ------------------------------
文件 | 真实 | 输入 | 假 | 真实 | 输入 | 错误的
-------------------------------------------------- ------------------------------
Windows-CRLF | CRLF -> LF | CRLF -> LF | 原样 | 原样 | 原样 | 原样
Unix-LF | 原样 | 原样 | 原样 | LF -> CRLF | 原样 | 原样
Mac-CR | 原样 | 原样 | 原样 | 原样 | 原样 | 原样
混合-CRLF+LF | 原样 | 原样 | 原样 | 原样 | 原样 | 原样
混合-CRLF+LF+CR | 原样 | 原样 | 原样 | 原样 | 原样 | 原样

于 2009-08-08T23:26:51.987 回答
3

Visual Studio 2008 可以毫无问题地处理Unix行终止。但是,它将尝试检测具有不一致行终止的文本文件以尝试修复这些问题。另一方面,记事本无法正确显示Unix文本文件。

于 2009-08-08T21:27:48.700 回答