使用Git进行跨平台开发(EOL问题)

4
在我们的开发环境中,我们使用Windows、Mac和Linux。 当涉及到提交 -> 拉取 -> 推送工作流时,我遇到了问题。
问题在于行尾字符。 如果有人在Mac上进行编辑,而另一个人在Windows上进行编辑,则在拉取时会发生冲突。 差异显示整个文件都不同,因为行结尾已更改。
因此,我的问题是如何设置所有环境以将所有行结尾转换为LF并在提交时保持不变。 在拉取时不要改变行结尾,将其保留为LF。
1个回答

6
你所要求的是让每个人将配置参数core.autocrlf设置为input,这将导致输入时(即进入存储库的数据;提交)进行换行符规范化,但不会在输出时(从存储库中检出的数据;拉取发生时)进行规范化。

然而,你可能并不想这样做。最理想的情况是让每个人正确地配置他们的编辑器。大多数程序员的编辑器都相当智能 - 它们会检测行尾,并在写回文件时使用相同的行尾。有些编辑器可能需要一些帮助。

(例如,请参见VonC在此处的答案以及其他有关autocrlf的SO问题。)


1
问题在于我们使用大量不同的编辑器(Netbeans、TextMate、Notepad++、MS Write、nano、vim、GitX、SmartGit等),调整每台机器上它们的设置是不切实际的。我会查看 autocrlf input - Petah
@Petah:但是你也必须在每台机器上调整此配置值。我知道,这个调整在任何地方都是相同的,很容易让git为您解决它。我只是试图提供平衡的观点:第一次就做对。 - Cascabel
第一名早已过去。 - Petah
@Petah:我所说的“第一次”是指“创建/编辑内容”,而不是“编辑内容”。如果您希望在存储库中全部使用LF而不是CRLF,无论使用什么解决方案,都必须进行更改提交。 - Cascabel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接