我正在我的 Win Vista 开发 VPC 上安装 msysgit 1.6.4 beta。安装屏幕询问我是否要使用 Unix 行终止或 DOS 行终止。通常,我会选择 DOS,但设置文本表明 DOS 终止可能意味着文件不能与所有 Git 命令行工具一起使用。Unix 行终止状态“......大多数 [Windows] 应用程序可以处理这个......”。
有谁知道我应该选择哪个选项通过 shell 使用 Git 来完成我的 VS 2008 工作?
msysgit 安装过程中的设置实际上是在这里修复core.autocrlf
config的值。
core.autocrlf
如果为 true,则在从文件系统读取时使 git
CRLF
在文本文件的行尾转换为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 | 原样 | 原样 | 原样 | 原样 | 原样 | 原样
Visual Studio 2008 可以毫无问题地处理Unix行终止。但是,它将尝试检测具有不一致行终止的文本文件以尝试修复这些问题。另一方面,记事本无法正确显示Unix文本文件。