根据用例正确设置git autocrlf

时间:2016-01-30 16:44:31

标签: git github gitlab core.autocrlf

我正在搜索根据某些用例使用的正确设置,但找不到任何描述相同的来源。因此,我要求这个问题作为任何寻找git的autocrlf选项正确设置的人的解决方案。

使用案例1:我在Mac上,其他开发人员都在Windows上。在我加入之前,他们正在管理源代码。

用例2:我在Windows上,其他开发人员都在Mac上。在我加入之前,他们正在管理源代码。

用例3:我在Linux上,其他开发人员都在Windows上。在我加入之前,他们正在管理源代码。

用例4:我在Windows上,其他开发人员都在linux上。在我加入之前,他们正在管理源代码。

使用案例5:我在Linux上,其他开发人员都在Mac上。在我加入之前,他们正在管理源代码。

用例6:我在Mac上,其他开发人员都在Linux上。在我加入之前,他们正在管理源代码。

我应该使用什么设置的git core.autocrlf?

修改 为什么这个问题不是许多类似问题的重复:

所有其他问题及其答案提供了所需的事实和知识,这使得读者需要做很多事情。这个问题旨在询问具体方案的具体答案。

2 个答案:

答案 0 :(得分:3)

简单:

 git config core.autocrlf false

(对于所有任何方案)

core.autocrlf config ,这意味着它不会被repo推送或克隆:它必须由用户设置。

这是在回购级别处理eol的传统方式。

您要使用的内容(根据您的方案添加或修改)是gitattributes core.eol directives

  • .gitattributes is a file可以在git repo中像任何其他文件一样进行管理。一旦您同意eol政策,该政策将在每个克隆实施。
  • 如果需要,可以为文件或文件组设置core.eol指令(与全局存储库范围的配置core.autocrlf相对)

对于异构环境,core.eol(仅适用于您认为有问题的文件)应为native(如果您怀疑编辑器坚持使用系统eol而不是使用文件中已存在的文件)

有关详情,请参阅" Mind the End of Your Line"。

答案 1 :(得分:0)

不要担心core.autocrlf;在根目录中添加.gitattributes文件,并将以下行放在:

* text=auto

这将导致git在提交时自动将所有行结尾转换为LF,并且(对于Windows机器)在结帐时将行结尾转换为CRLF。

请注意,对于用例1和3,现有开发人员在Windows上,将此行添加到.gitattributes可能会使您看起来突然有大量的更改提交。那是因为你在存储库中有很多带有CRLF的文件,git知道它必须将它们全部转换为LF。继续并提交这些更改,即使看起来没有任何改变。

另外需要注意的是,如果每个人都在同一个操作系统上,那么我甚至不会在转换行结尾时陷入困境;在这种情况下,请将* -text行放在.gitattributes文件中,以免发生转化。