有两个 git config 属性会影响行结尾:core.autocrlf
and core.eol
.
以前,您被告知要使用core.autocrlf = true
能够处理跨平台项目,但事实并非如此true
不再有。
如果您的系统/IDE/工具支持LF
你呢do want to use LF
和团队中的其他人一样,没有任何沉默lf->crlf->lf
标准化,你必须关闭autocrlf
并配置eol
不去推断native
行结尾,但强制它使用lf
.
现在有两种方法可以实现LF
在你所有的文件a/o repos中:
- 全局适用于本地计算机上的所有存储库。
- 通过签入每个存储库
.gitattributes
file.
该文件会覆盖克隆存储库的每个人的任何本地配置。
我个人建议对所有本地存储库都使用两者,并确保跨平台、跨开发的一致性。
1) 全局适用于本地计算机上的所有存储库
在您的工作目录(您的本地存储库)中:
-
首先提交一切
-
让我们偏执一点,在全局和仓库中都设置它。万一。
git config --global core.eol lf
git config --global core.autocrlf false
git config core.eol lf
git config core.autocrlf false
-
删除所有“代码”,除了.git
.
您还可以省略依赖项、已安装的文件(例如node_modules
)、构建文件和任何git 忽略文件也是如此。
-
最后运行
git reset --hard HEAD
现在应该可以正常工作了。新检查的文件应遵循新配置并保留从远程存储库克隆的所有行结尾。
请注意,如果您的远程存储库混合使用crlf
lf
结局,你还必须奔跑和推动
git add --renormalize .
2) 通过签入每个存储库.gitattributes
file
在您的工作目录(您的本地存储库)中:
-
Create .gitattributes
根目录中的文件包含以下内容:
* text=auto eol=lf
-
提交文件(以及其他所有内容)
-
与上面相同
-
与上面相同
重要的提示:将文件引入存储库后,仍然拥有旧 CRLF 文件的每个人都必须执行步骤 3 和 4 来更新其工作目录,因为仅检查提交不会影响已存在的文件。
Notes
setting core.autocrlf
to true
or input
覆盖core.eol
https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-core autocrlf https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-coreautocrlf
core.autocrlf = input
是 UNIX 系统上的首选值。https://stackoverflow.com/a/41282375/985454 https://stackoverflow.com/a/41282375/985454
https://stackoverflow.com/a/4425433/985454 https://stackoverflow.com/a/4425433/985454
故障排除
使用第三个选项安装适用于 Windows 的 git(如 Q 中的屏幕截图所示)
按原样结帐 - 按原样提交(core.autocrlf = false
)