我正在搜索根据某些用例使用的正确设置,但找不到任何描述相同的来源。因此,我要求这个问题作为任何寻找git的autocrlf选项正确设置的人的解决方案。
使用案例1:我在Mac上,其他开发人员都在Windows上。在我加入之前,他们正在管理源代码。
用例2:我在Windows上,其他开发人员都在Mac上。在我加入之前,他们正在管理源代码。
用例3:我在Linux上,其他开发人员都在Windows上。在我加入之前,他们正在管理源代码。
用例4:我在Windows上,其他开发人员都在linux上。在我加入之前,他们正在管理源代码。
使用案例5:我在Linux上,其他开发人员都在Mac上。在我加入之前,他们正在管理源代码。
用例6:我在Mac上,其他开发人员都在Linux上。在我加入之前,他们正在管理源代码。
我应该使用什么设置的git core.autocrlf?
修改 为什么这个问题不是许多类似问题的重复:
所有其他问题及其答案提供了所需的事实和知识,这使得读者需要做很多事情。这个问题旨在询问具体方案的具体答案。
答案 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
文件中,以免发生转化。