根据用例正确设置git autocrlf
我正在寻找适用于某些用例的适当设置,但找不到任何描述相同的来源。 因此,我问这个问题是为任何寻找git autocrlf选项的正确设置的人提供的解决方案。
用例1:我在Mac上,其他开发人员都在Windows上。 他们在加入之前正在管理源代码。
用例2:我在Windows上,其他开发人员都在Mac上。 他们在加入之前正在管理源代码。
使用案例3:我在Linux上,其他开发人员都在Windows上。 他们在加入之前正在管理源代码。
使用案例4:我在Windows上,其他开发人员都在Linux上。 他们在加入之前正在管理源代码。
使用案例5:我在Linux上,其他开发人员都在Mac上。 他们在加入之前正在管理源代码。
使用案例6:我在Mac上,其他开发人员都在Linux上。 他们在加入之前正在管理源代码。
我应该使用什么设置的git core.autocrlf?
编辑: 为什么这个问题是不是重复许多类似的问题:
所有其他问题和他们的答案提供了所需的事实和知识,使读者有很多工作要做。 这个问题旨在针对具体情况提出具体的答案。
简单:
git config core.autocrlf false
(对于所有情况和任何情况)
core.autocrlf
是一个配置,这意味着它不会被repo压入或克隆:它必须由用户设置。
这是处理回购协议水平的传统方式。
你想使用什么(添加或修改取决于你的场景)是gitattributes core.eol
指令。
.gitattributes
是一个可以像git其他文件一样在git repo中管理的文件。 一旦您同意采用eol政策,该政策将在每个克隆实施。 core.eol
指令(如果你想的话)(相对于全局资源库范围配置core.autocrlf
) 对于异构环境,core.eol(仅适用于您认为有问题的文件)应该是native
(如果您怀疑编辑器坚持使用系统eol而不是使用文件中已存在的文件)。
有关更多信息,请参阅“关注线路的末端 ”。
不要担心core.autocrlf
; 在根目录中添加一个.gitattributes
文件,并将以下行放入:
* text=auto
这将导致git在提交时自动将所有行结束符转换为LF,并且(对于Windows机器)在结帐时将行结束符转换为CRLF。
请注意,对于现有开发人员在Windows中的用例1和3,将此行添加到.gitattributes
可能会使您看起来像突然间有大量更改要提交。 这是因为你的仓库中有很多CRLF文件,而git知道它必须将它们全部转换为LF。 尽管看起来没有真正改变,但继续并提交这些更改。
还有一点需要注意的是,如果每个人都在同一个操作系统上,那么我甚至都不会在转换行结束时混淆; 在这种情况下,将* -text
.gitattributes
文件中,以避免发生转换。